CN107464207A - 基于可重构数据流系统芯片阵列的3d图学渲染加速系统 - Google Patents
基于可重构数据流系统芯片阵列的3d图学渲染加速系统 Download PDFInfo
- Publication number
- CN107464207A CN107464207A CN201710584195.2A CN201710584195A CN107464207A CN 107464207 A CN107464207 A CN 107464207A CN 201710584195 A CN201710584195 A CN 201710584195A CN 107464207 A CN107464207 A CN 107464207A
- Authority
- CN
- China
- Prior art keywords
- restructural
- function
- module
- renders
- graphics
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Abstract
本发明提供了一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统,包括:单核或多核的CPU芯片;N个3D图学渲染加速卡;带有N个PCIe插槽的母板;其中:N个3D图学渲染加速卡经由所述母板上的PCIe插槽以及PCIe总线与所述CPU芯片相连;每个3D图学渲染加速卡包括:一个3DX‑FPGA芯片阵列和M个SDRAM芯片;其中,所述3DX‑FPGA芯片阵列包括:X×Y个用于3D图学渲染加速的3DX‑FPGA芯片;所述SDRAM芯片用于存储3D数据;每个3DX‑FPGA芯片的逻辑由K个XPU模块组成,每个XPU模块由J个个射线跟踪核组成。本发明可取代传统的基于多核CPU或GPU群的超级计算机而在3D图学应用的速度、功耗、体积与成本上取得较好的效果。
Description
技术领域
本发明涉及3D图学技术领域,尤其涉及一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统。
背景技术
3D图学渲染技术是现今3D计算机图学(3D Computer Graphics)的应用中需求性最高的技术。这个技术的最高诉求是在实时应用中产生真实的视觉影像。朝着这个方向,3D图学渲染技术的实现至今有3种方式:
1.基于中央处理器(Central Processing Unit,简称CPU)或图形处理器(GraphicProcessing Unit,简称GPU)的3D图学渲染技术。
2.基于专用集成电路(Application-Specific Integrated Circuit,简称ASIC)芯片固定逻辑的3D图学渲染技术。
3.基于FPGA芯片可重构逻辑的3D图学渲染技术。
在许多大规模的3D应用中,最耗时间的任务是将3D影像的视觉信息表达在2D的平面上。尤其是在如3D工业设计、3D动画、3D电影特效编辑等的应用中做大规模、复杂的绘图设计(例如飞机、汽车的模型设计或城市景观设计),能够迅速完成切面(Cutting Plane)、模型合并(Model Interrogation)、复杂着色(Sophisticated Shading)是一个基本的关键操作。这些不同的3D图学应用有一个共同的技术要求,就是高速的3D数字信号处理功能。在罗聪翼著的《Blender权威指南》书第7章第5节《渲染农场》中叙述:著名的电影特效工作室Weta Digital在制作电影《2012》(注:2009年美国科幻灾难片)的过程中,花费在单帧画面上的渲染时间平均为20个小时,而整个地震场景的特效帧数超过7000帧,所以总共的渲染时间大约为141,120小时。
根据Wikipedia报导,现在3D应用市场上的3D图学工具几乎全由基于光栅法的系统(Rasterization-Based System)。这个系统的软件部分由OpenGLAPI(www.opengl.org)的库函数以及它们的应用组成,硬件部分全是CPU或GPU以及少数设计使用的专用定制芯片。
自70年代开始至今,随着CPU/GPU芯片设计技术以及超深亚微米工艺芯片制造工艺的高度发展,基于光栅法的3D图学工具的品质与操作速度有特别的进步,但由于它的操作在本质上是指令级串行执行的方式,速度的上升远远跟不上超深亚微米工艺根据摩尔定律(Moore’s Law)的进步。也就是说,虽然超深亚微米工艺技术已使微电子电路达到Giga赫兹级的操作能力,但迄今为止,光栅法3D图学应用的速度仍未达到实时应用的要求。近10年来,一些利用多核与配合CPU的定制硬件的光栅法系统报导略超过每秒24帧的视频效果,但它们的开发周期漫长而成本昂贵。
自70年代,一个基于物理光学的光线跟踪法出现,企图得到一个物理上逼真的视觉效果,将光学中的反射、折射、透视与阴影的物理现象利用几何光学的射线法计算出来。由于光线跟踪法本质上避免了不可见部分的跟踪,计算量是物体复杂度的对数函数,与光栅法计算量是情景复杂度的线性函数相比,在针对复杂情景的3D图学应用中有明显的优势。但是它的计算量对现今的计算机软件运行速度而言是过分大的负担。
自2001年开始,德国萨尔州大学(Saarland University)由Philipp Slusallek教授带领的计算机图学小组研究以基于光线跟踪法的硬件平行计算架构来实践3D图学建模与渲染。在2006年9月的美国犹他州举办的IEEE会议(IEEE Symposium on InteractiveRay Tracing)上,该小组宣布了一个实时光线跟踪的ASIC芯片设计,可以达到每秒200帧高品质的画面。根据德国汽车公司Volkswagan报导,该芯片技术已为汽车工业提供一个新的汽车模型的可视化设计方法,避免了昂贵耗时的原型设计,使得汽车工业的设计成本与产品上市周期都降低30%。
综合上述前两种3D图学应用系统,即纯软件(基于CPU/GPU)系统与纯硬件(基于ASIC芯片)系统,在建模、渲染的性能与成本两方面的优劣势:纯硬件的ASIC芯片虽然能产生远较纯软件的CPU或GPU方法高质量、高性能的画面,但成本太高,而且灵活度远不如前者,对多种3D图学应用不同的要求不能提供一种如利用CPU或GPU软件的可编程性调适的解决方案。朝着这个方向努力,基于传统的FPGA的3D图学应用系统虽然一方面能提供ASIC占优势而CPU/GPU所缺的性能而又具有ASIC所缺的CPU/GPU占优势的可编程灵活性,但它在片上逻辑资源上的浪费所造成相对于ASIC的高成本、高运算延迟与高功耗一直是未解决的问题。
从高性能计算(High-Performance Computing,简称HPC)的发展方向来看,利用单核顺序处理器设计的计算机系统,由于芯片的逻辑密度与运行速度遵循摩尔定律每18-24个月速度提升一倍而迅速发展,但是到2002年,由于散热问题而无法继续提升。CPU因此进入多核平行处理器的发展期,但由于平行编程的复杂性至今一直都处于缓慢进步的状态。斯坦福大学的Michael J.Flynn教授提出一个结合多核CPU与一般用途FPGA(General-Purpose FPGA)的方案来解决超级计算机中基于超深亚微米工艺的CPU散热问题:即利用数据流机(Data Flow Machine)的加速功能来降低超级计算机对CPU速度的要求,从而降低在应用中CPU芯片的散热量,同时提升系统的运行性能。
公开内容
(一)要解决的技术问题
本发明提供了一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统,以至少部分解决以上所提出的技术问题。
有鉴于本发明的背景技术,本发明的主要目的在于:
1.提供一种将3D图学渲染计算转换成一个可重构多平行数据流的计算架构(Reconfigurable Multiple Parallel Data Flow Computing Architecture)的超级计算加速(Supercomputing Acceleration)方法。换言之,提供一种将3D图学渲染计算转换成由少数的基本逻辑模块在X方向、Y方向与时间方向上做重复性展开的计算方法。
2.提供一种最适合前述可重构多平行数据流计算架构的FPGA架构,即一种最能体现可重构多平行数据流计算优势的FPGA架构,简称3DX-FPGA架构。
3.提供一种最适合前述3D超算的FPGA架构的基于硬件语言(HardwareDescription Language,简称HDL)的描述与其产生的方法。
4.提供一种用于3D图学渲染加速的FPGA芯片的设计方法(即在下面说明的VDS),利用该方法设计一个专用型FPGA芯片组(Application-Specific FPGA Chipset)以提升3D图学渲染速度(性能)及芯片逻辑密度(体积与成本),同时降低逻辑操作的功耗(散热)。
5.提供一种将前述可重构多平行数据流计算架构映射至3D超算FPGA架构的高效率技术映射(Technology Mapping)方法,包括6部分:
A.系统级HDL分割(System-Level HDL Partition)
B.综合(Synthesis)
C.映射(Mapping)
D.布局(Place)
E.布线(Routing)
F.比特流产生(Bit Stream Generation)。
6.提供一种用于3D图学渲染加速在3DX-FPGA与双倍速率同步动态随机存储器(Double Data-Rate Synchronous Dynamic Random Access Memory,简称DDR SDRAM)之间做高速数据传输的方法。
7.提供一种适用于3D图学渲染加速的嵌入式动态可重构浮点ALU(EmbeddedDynamically Reconfigurable Floating-Point ALU)的设计方法,该ALU可执行浮点数的加法、减法、乘法与除法。
8.提供一种适用于3D图学渲染加速的嵌入式浮点比较器(Embedded Floating-Point Comparator)的设计方法。
9.提供一种适用于3D图学渲染加速的嵌入式数据缓冲存储器(EmbeddedReconfigurable Data Cache)的设计方法。
10.提供一种适用于3D图学渲染加速的嵌入式数据先入先出寄存器文档(First-In First-Out Register File)的设计方法。
11.提供一种适用于3D图学渲染加速的嵌入式数据先入先出随机存储存储器(First-In First-Out Random Access Memory)的设计方法。
12.提供一种适用于3D图学渲染加速的嵌入式数据先入后出寄存器文档(First-In Last-Out Register File)的设计方法。
13.提供一种结合3D图学应用与3D图学渲染加速系统(包括3D渲染加速卡与3D数据存储卡)的插件,让任何一种3D图学应用(如动画制作、电影特效编辑、工业设计等)经由此插件与3D图学应用的同时运行而轻易完成3D图学渲染加速的功能。
(二)技术方案
本发明提供了一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统,包括:单核或多核的CPU芯片;N个3D图学渲染加速卡;带有N个PCIe插槽的母板;其中:
N个3D图学渲染加速卡经由所述母板上的PCIe插槽以及PCIe总线与所述CPU芯片相连;
每个3D图学渲染加速卡包括:一个3DX-FPGA芯片阵列和M个SDRAM芯片;其中,所述3DX-FPGA芯片阵列包括:X×Y个用于3D图学渲染加速的3DX-FPGA芯片;所述SDRAM芯片用于存储3D数据;
每个3DX-FPGA芯片的逻辑由K个XPU模块组成,每个XPU模块由J个射线跟踪核组成;
其中,N、X、Y、M、K、J均为大于0的整数。
在本发明的一些实施例中,还包括:GPU芯片,该GPU芯片经由PCIe总线与CPU芯片相连而成为CPU的协处理器。
在本发明的一些实施例中,所述的3DX-FPGA芯片阵列包含的X×Y个3DX-FPGA芯片利用3D图学渲染加速卡上的焊接金属线以X-Y矩阵的形式连接。
在本发明的一些实施例中,所述3DX-FPGA芯片的设计流程分成两部分:应用逻辑部分与应用平台部分,其中:所述应用逻辑部分采取3D数据流机(3D Dataflow Machine)的硬件语言(Hardware Description Language,简称HDL)的设计流程;所述应用平台部分采取3DX-FPGA全能设计流程(Versatile Design System,简称VDS)。
在本发明的一些实施例中,所述3DX-FPGA芯片是一个具有两层逻辑结构的电路;其中,上层的可重构层电路与下层的逻辑层电路并存而相互叠加成为一体,形成一个平行叠加而相互信号紧密连接的完整应用电路。
在本发明的一些实施例中,所述的逻辑层电路是一个以X-Y二维矩阵形式排列的逻辑模块阵列;其中,该逻辑模块阵列包括:一个四面环绕的可重构输入-输出模块环(Reconfigurable Input-Output Block Ring);以及一个被可重构输入-输出模块环包围的可重构核心逻辑矩阵模块阵列(Reconfigurable Core Logic Matrix Block Array)。
在本发明的一些实施例中,所述的可重构输入-输出模块环由多种不同型的输入-输出模块组成;各个不同型的输入-输出模块的功能为实时可重构(real-timereconfigurable),即各个不同输入-输出模块体现在应用中的功能由它在3D图学渲染计算加速中的功能需求实时决定。
在本发明的一些实施例中,所述的可重构核心逻辑矩阵模块阵列由3DX-FPGA芯片上层的可重构层电路控制而重构为5个不同的巨函数模块(Megafunction Block):
A.PCIEC(PCIE Core)巨函数模块,其功能为:基于PCIE总线协议的DMA(DirectMemory Access);
B.PCIEA(PCIE Application)巨函数模块,其功能为:读写DMA数据并分配至寄存器与RAM块(RAM Block,简称RAMB);
C.SDCTL(SDRAM Control)巨函数模块,其功能为:3DX-FPGA外SDRAM的控制;
D.CACHE(Cache Memory and Cache Control)巨函数模块,其功能为:3D数据中间缓存与控制;
E.RENDER(Render Frame),其功能为:3D渲染计算模块;
其中,每一个巨函数模块都是根据不同的应用规格而可重构的。
在本发明的一些实施例中,所述的PCIEC巨函数模块包括2个巨函数子模块(Megafunction Sub-Block):
PCIEIF(PCIE Interface)巨函数子模块,其功能为:与PCIe总线相连,负责DMA巨函数子模块对PCIe总线的数据进出;
DMA(Direct Memory Access)巨函数子模块,其功能为:与PCIEAPPRT巨函数子模块相连,负责主内存与PCIEAPPRT巨函数子模块之间的大量数据进出的控制。
在本发明的一些实施例中,所述的PCIEA巨函数模块包括3个巨函数子模块:
PCIEAPPRT(PCIE APP RAYTRACE)巨函数子模块,其功能为:与LOADREG、LOADRAMB二巨函数子模块相连,负责主内存的大量数据进出LOADREG、LOADRAMB的分流/合流(multiplexing/de-multiplexing);
LOADREG(LOAD REGISTER)巨函数子模块,其功能为:送给或收自主内存的寄存器数据;
LOADRAMB(LOAD RAMB)巨函数子模块,其功能为:送给或收自主内存的存储器数据。
在本发明的一些实施例中,所述的SDCTL巨函数模块包括5个巨函数子模块:
SDCTL_FB(SDRAM CONTROL FB)巨函数子模块,其功能为:与外部的FB_SDRAM相连,负责外部的FB_SDRAM的数据读与写;
SDCTL_KD(SDRAM CONTROL KD)巨函数子模块,其功能为:与外部的KD_SDRAM相连,负责外部的KD_SDRAM的数据读与写;
SDCTL_PRIM0(SDRAM CONTROL PRIMO)巨函数子模块,其功能为:与外部的PRIM0_SDRAM相连,负责外部的PRIM0_SDRAM的数据读与写;
SDCTL_PRIM1(SDRAM CONTROL PRIM1)巨函数子模块,其功能为:与外部的PRIM1_SDRAM相连,负责外部的PRIM1_SDRAM的数据读与写;
SDCTL_TEXTURE(SDRAM CONTROL TEXTURE)巨函数子模块,其功能为:与外部的TEXTURE_SDRAM相连,负责外部的TEXTURE_SDRAM的数据读与写。
在本发明的一些实施例中,所述的CACHE巨函数模块包括4个巨函数子模块:
CACHE_TRAV(CACHE TRAV)巨函数子模块,其功能为:中间缓存应TRAV模块逻辑要求而来自外部KD_SDRAM的数据;
CACHE_LIST(CACHE LIST)巨函数子模块,其功能为:中间缓存应LIST模块逻辑要求而来自外部PRIM0_SDRAM的数据;
CACHE_INT(CACHE INT)巨函数子模块,其功能为:中间缓存应INT模块逻辑要求而来自外部PRIM1_SDRAM的数据;
CACHE_SHADE(CACHE SHADE)巨函数子模块,其功能为:中间缓存应SHADE模块逻辑要求而来自外部TEXTURE_SDRAM的数据。
在本发明的一些实施例中,所述的RENDER巨函数模块包括7个巨函数子模块:
RENDER_RAYGEN(RENDER RAYGEN)巨函数子模块,其功能为:计算并产生帧渲染(FRAMERENDER)模块所需的穿过一个像素块(Pixel Tile)的主射线(Primary Ray);
RENDER_TRAVROUTE(RENDER TRAVROUTE)巨函数子模块,其功能为:从来自RENDER_RAYGEN的主射线(Primray Rays)与RENDER_SHADE的次级射线(Secondary Rays)中为RENDER_TRAV的输入射线做选择;
RENDER_TRAV(RENDER TRAV)巨函数子模块,其功能为:循环计算并决定射线由上而下依次与输入3D情景的KD节点的相交与否,直至叶结点(leaf node)为止;
RENDER_LIST(RENDER LIST)巨函数子模块,其功能为:为输入的叶结点输出它的每一个图元(primitive);
RENDER_INT(RENDER INT)巨函数子模块,其功能为:计算并决定射线与输入图元的相交与否;
RENDER_SHADEROUTE(RENDER SHADEROUTE)巨函数子模块,其功能为:为与它连接的RENDER_SHADE模块选择射线跟踪核做为它的(射线,图元)输入来源;
RENDER_SHADE(RENDER SHADE)巨函数子模块,其功能为:
1.计算跟踪射线的着色(shadecolor)贡献;
2.计算并产生所有的光源线;
3.计算并产生次级反射或折射射线。
在本发明的一些实施例中,在不同的3D应用中将不同的个别的巨函数模块与巨函数子模块映射至3DX-FPGA芯片阵列中不同的个别的成员芯片以及它的组成结构,其中,映射关系,包括各层成员的个数与成员逻辑的优化结构,都是由3D应用的性能与成本规格决定;所述N、X、Y、M、K、J的选择与逻辑模块优化由目标应用对3D图学数据处理系统的性能、功耗、空间体积与成本的规格决定。
在本发明的一些实施例中,所述巨函数模块与3DX-FPGA芯片阵列中成员芯片的映射关系是由一个系统级的映射软件来完成,该映射软件基于预定的应用规格将整个3D应用的所有巨函数模块配置进数个指定的3DX-FPGA。
在本发明的一些实施例中,所述的可重构核心逻辑矩阵模块阵列由不同型的可重构逻辑模块列/行(Reconfigurable Logic Block Column/Row)组成,各个可重构逻辑模块列/行的成员模块,即可重构逻辑模块,是由相同的逻辑电路构成。
在本发明的一些实施例中,所述的可重构逻辑模块列/行包含以下类型:
1.可重构混成逻辑模块列(Reconfigurable Combinational Logic BlockColumn);
2.可重构乘法器模块列(Reconfigurable Multiplier Block Column);
3.可重构浮点ALU模块列(Reconfigurable Floating Point ALU BlockColumn);
4.可重构随机存取存储模块列(Reconfigurable RAM Block Column);
5.可重构SDRAM控制模块列(Reconfigurable SDRAM Control Block Column);
6.可重构PCIE模块列(Reconfigurable PCIE Block Column);
7.可重构全局信号模块列(Reconfigurable Global Signal Block Column);
8.可重构全局线模块列(Reconfigurable Global Wire Block Column);
9.可重构全局编程模块行(Reconfigurable Global Program Block Row)。
在本发明的一些实施例中,所述可重构混成逻辑模块列由多个可重构混成逻辑模块组成,各个不同的可重构混成逻辑模块是由相同的逻辑电路构成。
在本发明的一些实施例中,所述可重构混成逻辑模块由8个可重构逻辑单元(Reconfigurable Logic Element)与可重构局部路由池(Reconfigurable Local RoutingPool)相连组成。
在本发明的一些实施例中,所述可重构逻辑单元由一个4输入查找表(4-inpitLook-Up Table、一个加法进位链电路(Adder Carry Chain Circuit)、一个D型触发器(D-Typed Flip-Flop)与两个两输入复用器(2-Input Multiplexor)组成。
在本发明的一些实施例中,所述4输入查找表由两个3输入查找表(3-input Look-Up Table),CLUT与SLUT,加上一个两输入复用器而组成。
在本发明的一些实施例中,所述两个3输入查找表(CLUT与SLUT)可经由可重构层逻辑的设计而重构为链加法器(chained adder)或链比较器(chained comparator)。
在本发明的一些实施例中,所述可重构混成逻辑列可重构为多位移动寄存器(Multi-Bit Shift Register)。
在本发明的一些实施例中,所述可重构浮点ALU模块列由多个可重构浮点ALU模块(Reconfigurable Floating Point ALU Block)组成;其中的可重构浮点ALU模块是一个可重构的浮点ALU ASIC电路。
在本发明的一些实施例中,所述可重构浮点ALU模块可实时改变操作码(Operation Code),在二元浮点数的加、减、乘、除四操作中任选一个,在指定的周期数内执行选中的操作。
在本发明的一些实施例中,所述的可重构随机存取存储器模块列由多个可重构随机存取存储器模块(Reconfigurable RAM Block)组成。
在本发明的一些实施例中,所述的可重构随机存取存储器模块可重构为中间缓存随机存取存储器模块(Cache RAM Block);或所述的可重构随机存取存储器模块可重构为先入先出随机存取存储器模块(First-In First-Out RAM Block);或所述的可重构随机存取存储器模块可重构为先入后出随机存取存储器模块(First-In Last-Out RAM Block);或所述的可重构随机存取存储器模块可重构为先入先出寄存器文档(ReconfigurableFirst-In First-Out Register File)模块;或所述的可重构随机存取存储器模块可重构为先入后出寄存器文档(First-In Last-Out Register File)模块。
在本发明的一些实施例中,所述可重构SDRAM控制模块列由多个SDRAM控制模块组成。
在本发明的一些实施例中,所述可重构PCIE模块列由多个PCIE模块组成。
在本发明的一些实施例中,所述可重构全局信号模块列由多个可重构全局信号模块组成;或所述可重构全局线模块列由多个可重构全局线模块组成。
(三)有益效果
从上述技术方案可以看出,本发明具有以下有益效果:
1、本发明提供的基于可重构数据流系统芯片阵列的3D图学渲染加速系统,采用可重构系统芯片阵列做离核式(Out-of-Core)的计算,与现今流行的利用多核的CPU或GPU的3D图学软件渲染技术用的指令级操作速度相比,一方面保留了CPU或GPU的可编程特性优势,另一方面充分利用芯片门级计算的平行性,以实时的门逻辑匹秒(10-12秒)级延迟的操作速度超越CPU或GPU指令微秒(10-6秒)级延迟的操作速度,同时以芯片阵列的平行操作方式扩展上述的芯片门级计算的优势以取得平均渲染速度的104倍级的提升。
2、本发明提供的基于可重构数据流系统芯片阵列的3D图学渲染加速系统,采用交互式光线跟踪法与实时渲染(Interactive Ray Tracing andReal-time Rendering)的算法,与现今流行的OpenGL软件库采用的光栅法(Rasterization)相比,将渲染的3D数据量做对数型(log(x),x代表3D图数据量)缩减,对大型3D图像的渲染有超过万(104)级的加速效果。
3.本发明提供的基于可重构数据流系统芯片阵列的3D图学渲染加速系统,采用的可重构数据流机系统芯片可以针对不同的3D图学应用做不同的优化。比如工业级的3D图学应用对影像精度的要求较高,可以利用利用系统芯片的可重构性,增加RENDER模块来增大平行处理的象素模块,而不需另外设计新的3D图学应用系统。如此,采用可重构数据流机系统芯片带来的可重构性将反映在3D图学渲染加速系统的速度、功耗、体积与成本上。
4.本发明提供的基于可重构数据流系统芯片阵列的3D图学渲染加速系统,采用的可重构数据流机系统芯片,与现今流行的FPGA芯片相比,有针对3D图学渲染应用优化(Application-Specific Optimization)的优势。优化的方向包括可重构数据流机系统芯片的架构(比如浮点ALU运算模块的电路结构与针对数据流机设计的嵌入式中间缓存Cache模块的电路结构)以及从3D图学应用系统到可重构芯片架构的映射效率。这些优化将反映在3D图学渲染加速系统的速度、功耗、体积与成本上。
附图说明
以下的附图说明,根据本发明的结构分为两个系列:
(一)可重构3D图学渲染加速系统(3DX系统)
(二)可重构3D图学渲染加速系统芯片阵列(3DX-FPGA芯片阵列)说明如下:
(一)可重构3D图学渲染加速系统(3DX系统)
图1示出的是本发明的3D图学渲染加速系统的组成图。
图2A示出的是不含本发明的经典PC硬件架构图。
图2B示出的是本发明中3D图学渲染加速系统的硬件架构。
图3示出的是本发明中3D图学渲染加速系统的软件架构。
图4示出的是本发明中3D图学渲染加速系统的逻辑流程图。
图5示出的是本发明中33D图学渲染加速系统的可重构架构流程图。
图6示出的是本发明中3D图学渲染加速系统的X-Ray架构XPU流程图。
图7示出的是本发明中3D图学渲染加速系统的G-Ray架构XPU流程图。
图8示出的是本发明中3D图学渲染加速系统的S-Ray架构Lray XPU流程图。
图9示出的是本发明中3D图学渲染加速系统S-Ray架构PSray XPU流程图。
图10示出的是本发明中3D图学渲染加速系统V-Ray架构Lray XPU流程图。
图11示出的是本发明中3D图学渲染加速系统V-Ray架构PSray XPU流程图。
图12示出的是本发明中3D图学渲染加速系统W-Ray架构Lray XPU流程图。
图13示出的是本发明中3D图学渲染加速系统W-Ray架构PSray XPU流程图。
图14示出的是本发明中3D图学渲染加速系统的GPIO环数据流程图。
图15示出的是本发明中3D图学渲染加速系统的3DX-FPGA芯片阵列。
图16示出的是本发明中的3D图学渲染加速系统3DX-FPGA芯片阵列图。
图17示出的是本发明中的3D图学渲染加速系统的芯片阵列卡系统图。
图18示出的是本发明中的3D图学渲染加速系统的XPU功能模块图。
(二)可重构3D图学渲染加速系统芯片阵列(3DX-FPGA芯片阵列)
图19示出的是本发明中的VDS流程图。
图20示出的是本发明中的VAK流程图。
图21示出的是本发明中的VBK流程图。
图22示出的是本发明中的VDK流程图。
图23示出的是本发明中的VVK流程图。
图24示出的是本发明中的VDS集成电路设计流程图。
图25示出的是本发明中的VDS GUI窗户。
图26示出的是本发明中的XPU FPGA模块阵列图。
图27示出的是本发明中的XPU逻辑单元电路图。
图28示出的是本发明中的FPU加减法器管线架构。
图29示出的是本发明中的FPU乘法器管线架构。
图30示出的是本发明中的FPU除法器管线架构。
具体实施方式
本发明提供了一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统,它由多个3D图学渲染加速卡与一个带有一个或多个PCIe插槽的PC母板组成,各个3D图学渲染加速卡由多个3DX-FPGA组成。本发明涉及各个3D图学渲染加速卡与3D图学渲染加速卡上各个3DX-FPGA的设计方法,同时涉及上述各元件与3D图学应用软件的连接关系而组成一个完整的基于可重构数据流系统芯片阵列的高性能3D图学渲染加速系统的设计方法。
本发明综合上述多种方法的优缺点来解决现今实践3D渲染应用的系统在速度(太慢)、热功耗(太高)、体积(太大)、成本(太高)四方面的问题。
本发明提出的解决方法的重点在于融合多种3D图学应用解决方案各别的优势,而又避开各别方案的缺点。更具体地,一方面保留纯软件方法的可编程模式,因而继承它应用的灵活性与可调试性,另一方面又针对3D图学应用所需的硬件速度优势提供具有高速操作性能的嵌入式ASIC模块,让这两种组织在执行3D图学应用任务的时间与空间设计上交错存在,合作无间。其共存与合作的方式以及各自在软件设计领域与硬件设计领域的形态都将由3D图学应用产品的性价比优化点来决定。
本发明首创的基于可重构数据流系统芯片阵列的3D图学渲染加速系统是利用一个现今通用的PC,在PC母板的PCIe插槽上插上多个3D图学渲染加速卡,在PC上启用一个带有3D超算插件的3D应用软件。可以使任何一个3D图学应用,如动画制作、电影特效编辑、工业设计(飞机、汽车模型)、建筑设计、室内装潢设计等,从过去5小时的渲染变成2秒钟之内滑动鼠标即可实时完成的动作。
它的实现集成了几种关键技术:
1.高性能计算(High-Performance Computing,简称HPC)技术中的高性能3D图学渲染加速技术。
本发明采用的是交互式光线跟踪与实时渲染(Interactive Ray Tracing andRealtime Rendering)技术。是由德国Saarland大学Philipp Slusallek教授带领的计算机图学小组在2002年提出(参考Ingo Wald Ph.D.论文,Realtime Ray Tracing andInteractive Global Illumination,Ph.D.thesis,Computer Graphics Group,SaarlandUniversity,2004)。
本发明将此技术用我们首创的可重构3D数据流机(Reconfigurable 3D DataflowMachine)架构体现在高性能的3D图学图学渲染加速系统的设计上。
2.可重构计算(Reconfigurable Computing,简称RC)技术中的可重构系统芯片设计技术
本发明采用的是基于静态存储器(Static RAM Based)的在线可编程门阵列(Field-Programmble Gate Array,简称FPGA)设计技术,包括FPGA芯片设计、FPGA芯片开发软件设计与FPGA开发板设计三方面的技术,是由Xilinx公司于1984年提出(参考加拿大Toronto大学Johnathan Rose教授的著作-超深亚微米FPGA的架构与CAD:Architectureand CAD forDeep-Submicron FPGAs,Vaughn Betz,Alexander Marquardt,JonathanRose,Kluwer Academic Publishers,1999)。
本发明将此技术针对高性能的3D图学渲染加速应用在FPGA芯片架构设计、FPGA芯片开发软件设计与FPGA开发板设计三方面做相当多的优化,首创可重构3D数据流FPGA(Reconfigurable 3D Datafiow FPGA,简称3DX-FPGA)芯片架构。
3.3D应用数据的浮点除法运算电路设计技术
3D渲染加速算法中对运算速度与运算逻辑资源量的性价比影响最大的计算算法是浮点除法,本发明采用的是Newton-Raphson算法,主要原因是它能最大程度利用高速乘法器带来的二次收敛(quadratical convergence)计算速度。(参考斯坦福大学MichaelJ.Flynn教授带领的Computer Systems Laboratory发表的总结自1958至1997的浮点除法算法与实践-Division Algorithms and Implementations,Stuart F.Oberman,MichaelJ.Flynn,IEEE Transaction on Computers,Vol.46,No.8,1997)
本发明在Newton-Raphson算法基础上将浮点除法器设计成3个可重构的浮点运算基本单元,而可重构成一个浮点除法器或3个个别的浮点加法、减法与乘法器。
4.3D数据的Cache(中间缓存)电路设计技术
3D渲染加速计算的要点之一是缩短渲染计算管线(Rendering Pipeline)在渲染过程中读与写3D数据存储所需的时间。本发明采用的技术就是三级缓存(3-LevelCaches):第一级缓存利用芯片上存储器(On-Chip RAM),每一个3D渲染管线各自有一个第一级缓存,第二级缓存也是一个芯片上存储器,由所有的3D渲染管线共用,第三级缓存利用3D超算卡的DIMM插槽上安装的SDRAM卡。(参考John L.Hennessy与David A.Patterson合著的Computer Architecture-A Quantitative Approach,5th Edition,Elsevier SciencePte Ltd.,第3章-Memory Hierarchy Design)
本发明针对3D图学超算机的数据流架构设计最优化的Cache逻辑来预测并缓存3D渲染管线各管段的数据需求,大幅度提高3D渲染的总体速度。
5.基于Intel PCIe架构的PC体系的PCIe总线接口技术
本发明的可重构3D图学超级计算是建筑在Intel PC的PCIe架构上做的离核(Out-of-Core)计算,采用的PCIe规格是兼容PCIe第二/三/四代(PCIe Gen.2/3/4)的设计。(参考PCIe的权威著作-PCIe Express Architecture,Ravi Budruk,Don Anderson,TonShanley,Addison Wesley,2003)
本发明在可重构3D超算系统芯片上以可重构方式将PCIe接口针对不同的应用规格优化,效果反映在3D图学超算机的性能提升,即速度提升、体积下降、功耗下降与成本下降。
6.PCIe总线主DMA(Bus Master Direct Memory Access)设计技术
本发明在可重构3DX卡上连接CPU与3DX-FPGA采用的是PCIe总线主DMA(BusMaster DMA)设计技术。(参考Xilinx xapp859 Application Note:Virtex-5 FPGAIntegrated Endpoint Block for PCI Express Designs:DDR2 SDRAM DMA InitiatorDemonstration Platform,Xilinx Corporation,2008,Xilinx xapp1052 ApplicationNote:Bus Master Performance Demonstration Reference Design for the Xilinx EndPoint PCI Express Solutions,Xilinx Corporation,2011)
为不同的3D图学图学渲染加速应用发挥PCIe总线的最大数据传输速率(PCIeGen.2/3/4提供每秒5/8/16Giga Bits的总线流速),本发明采用可重构逻辑来设计DMA,目的在配合不同的应用需求与可重构3D超算机的逻辑资源需求量。
7.与3D应用软件(如国际开源软件Blender)对接的3D图学渲染加速插件技术
本发明的3DX卡与3D数据存储SDRAM(包括贴片封装模式与DIMM插槽模式)利用3D应用软件(如Blender)的3D超算Python插件(Python Add-on)与3D应用软件无缝连接。(参考Blender权威指南,罗聪翼,机械工业出版社,2011)。
本发明的可重构3D图学渲染加速系统需要一个3D图学应用软件让使用客户在不同的操作系统(Windows、Linux)下能容易操作完成各种制作3D图学内容的任务而体验可重构3D超算机为应用带来的无与伦比的速度。Blender软件正符合这个要求。它提供3D建模、渲染、动画、电影特效后期处理、游戏制作、3D跨平台交互制作等全方面的工具套件。据wiki.blender.org报导,今天Blender拥有全球超过20万的用户,本发明对Blender用户的贡献将把可重构3D超算机产品迅速而有效地带给广大的中国乃至全球用户。
本发明的目的是突破3D渲染困境,打破目前3D渲染所存在的操作速度与占据空间上的低效率、高功耗、高成本的现状,设计研发中国独立自主的微超算系统芯片及其相关配套软件技术组成的3D微超算系统,颠覆现有超级运算功能计算机巨型化、大规模、高能耗发展的路径。这对于提高渲染市场生产效率、提升科创文化影响力、提高国家科技竞争力、实现可持续发展都有非常重大的意义。
本发明是针对现今3D图学渲染技术的低速度、高功耗、大体积与高成本四大问题提出的一个解决方法:基于可重构数据流系统芯片组的高性能3DX系统。解决原理如下:
A.用数据流机架构取代von Neumann CPU的Load-Store架构
利用70年代提出而在80年代热烈讨论的数据流机(Dataflow Machine)架构(相对于von Neumann提出的控制流Control Flow架构)来描述3D图学渲染系统流程。
参考Dataflow Computing and Its Impact on Automation Applications,Peter Panfilov,Sergey Salibekyan,24th DAAAM International Symposium onIntelligent Manufacturing and Automation,2013。
文章强调CPU/GPU执行的Control Flow对数据流型计算相对太慢的原因在于用von Neumann CPU的Load-Store架构造成的存储延迟(memory latency)与同步负担(synchroniZation overhead)。
这是本发明决定用数据流系统架构取代多核CPU/GPU的基本原因。
B.3D图学渲染用光线跟踪法(Ray Tracing)取代现今流行的光栅法(Rasterization)。
光栅法的根本问题是它不是一个物理学上真实的(physically realistic)3D渲染方法。它的计算量是3D数据量χ的线型(linear)函数(aχ)。光线跟踪法根本上是用几何物理光学来模仿3D情景的所有光学现象,包括直射、反射、折射、阴影等。光线跟踪法的计算量,由于图元处理上的遮挡剔除(occlusion culling),是3D数据量的对数(logarithmic)函数(log x)。对于复杂情景大数据的3D渲染,光线跟踪法计算量远小于光栅法(log x<<ax)。本发明采用德国Saarland大学的Philipp Slusallek教授带领的计算机图学小组提出的SaarCOR(Saarbrucken Coherence Optimized Ray Tracer)架构。这是至今世界最快的3D渲染算法。它的渲染器(Renderer)架构是四个管道(Pipe)组成的管线(Pipeline):穿越(Traverse)-列举(List)-穿刺(Intersect)-着色(Shade)。它的流结构(Flow Structure)由此四个管道无缝连接而决定。
C.各个数据流机架构的流结构不同,用最适合3D渲染流结构的FPGA架构可得最高的Technology Mapping效果。
设计一个最适合3D图学渲染数据流描述与映射的FPGA(包括3D数据流FPGA架构及其映射软件)。数据流架构的实现是灵活的,需要一个能充分发挥3D图学数据流架构在浮点操作与数据Cache操作上的优势的FPGA架构与技术映射(Technology Mapping,即3D数据流描述到3D超算FPGA架构的最佳Map-Place-Route映射-布局-布线)。
D.利用可扩展的3DX-FPGA阵列解决3D数据流机对不同3图学应用的扩展需求
将整个3D图学渲染数据流机逻辑描述映射至一个3D图学渲染加速系统的5层逻辑结构:
3D图学渲染加速系统-由N个3D图学渲染加速卡组成
3D图学渲染加速卡-由XxY个3DX-FPGA与M个SDRAM组成
3DX-FPGA-由K个XPU组成
XPU-由J个RTC组成
RTC-由traverse-list-intersect 3个管道连成
其中,N、X、Y、M、K、J的选择由目标应用对3DX系统的性能、功耗、空间体积与成本的规格决定。其可行性证明可由VDS完成。
E充分利用现有的Intel PCIe总线系统母板架构
把3D图学渲染加速卡安置到PC母板的PCIe插槽上。以DIMM插槽模式或贴片封装方式安置3D数据存储SDRAM到3DX卡上。
本发明利用上述流程完成一种3D图学渲染加速系统的设计。该系统包括五部分,分别为:(1)一个含多核CPU的系统母板、(2)一个多核GPU、(3)N个3D图学渲染加速卡、(4)各个3D图学渲染加速卡配置有M个3D数据存储卡以及(5)系统母板上的N个PCIe总线插槽。其中的N个3D图学渲染加速卡都个别安装进系统母板的PCIe插槽。
上述方案中,所述的3D图学渲染加速卡(2)由X×Y个用于3D图学渲染加速的FPGA芯片(以下简称3DX-FPGA)以x-y直角排列方式经由3D图学渲染加速卡上贴片或贴封装组成。3D图学渲染加速卡上的邻近的3DX-FPGA的双向输入输出Pad之间由3D图学渲染加速卡上金属线焊接而连接。各个3DX-FPGA的架构由应用到芯片的映射决定。
上述方案中,所述的3D数据存储卡(3)由多个DDR2或DDR3芯片组成。3D数据存储卡与3D图学渲染加速卡的连接经由DIMM封装插槽完成。
上述方案中,所述的3DX-FPGA的逻辑层电路可由3DX-FPGA的可重构层电路控制而重构成为下列的巨功能块(Megafunction Block)的组合:
其中各个巨功能块有个别不同的扩展性而对芯片不同逻辑资源有不同的需求度。
上述方案中,所述的(1)-(4)各巨功能块由下列类型的可重构模块经由3D系统设计方法的VAK-VBK-VDK流程映射至一个3D芯片的下列模块:
(A)逻辑模块(Logic Block)
(B)RAM模块(RAM Block)
(C)乘法器模块(Multiplier Block)
上述方案中,所述的(5)RENDER巨功能块由下列类型的可重构模块经由3D系统设计方法的VAK-VBK-VDK流程映射至一个3D芯片的下列模块:
(A)逻辑模块(Logic Block)
(B)RAM模块(RAM Block)
CC)浮点ALU模块(Floating-Point ALU Block)
上述方案中,所述的3DX-FPGA的输入-输出模块环由多种可重构输入-输出模块(Reconfigurable Input-Output Block)无缝连接形成一个四方的环状阵列。每一个输入-输出模块根据它的位置在X方向或Y方向边而与核心逻辑矩阵模块阵列的X行或Y列对齐无缝连接。
上述方案中,所述的3DX-FPGA的可重构输入-输出模块由4个可重构输入-输出子模块(Reconfigurable Input-Output Cell)沿着它位置所在边的(X或Y)方向无缝连接而成。
上述方案中,所述的3DX-FPGA的可重构输入-输出子模块有下列功能电路:
(A)输入-输出板块(Input-Output Pad)
(B)输入-输出缓冲(Input-Output Buffer)
包括一个输入缓冲电路与一个3态输出缓冲电路,形成一个双向输入-输出缓冲电路。3态输出缓冲电路的输出端口与输入-输出板块连接,使能端口与3态控制信号连接。
(C)输入-输出数据通道(Input-Output Datapath)包括输入路径(Input Path)、输出路径(Output Path)与3态路径(Tri-State Path)
3个数据路径电路都各自包含两个D型触发器。在普通模式下,它们形成两个并联电路而由时钟信号的每个周期的上升沿与下降沿分别选择采样输出,实现双数据率DDR(Double-Data Rate)的输入与输出功能。在边界扫描模式(Boundary Scan Mode)下,每个数据路径的第一个D型触发器形成3个串连的电路,实现边界扫描的数据位移的功能,而每个数据路径的第二个D型触发器被用在JTAG边界扫描的INTEST与EXTEST指令执行中的更新(Update)步骤。
为达到上述目的,本发明提供一个统一前述所有技术路线而全方位解决3D图学超级计算机设计技术问题的方法,称为3D多功能系统设计体系(3D Versatile DesignSystem,简称3D VDS)。该设计方法体系由4个系统与芯片自动化设计流程与一个芯片全定制流程紧密合作组成。以下列出个别流程(A-E)与配套的支撑工具套件:
A.应用设计套件(Versatile Application Kit,简称VAK)
-3D图学超级计算机的应用与系统设计流程
B.芯片组建套件(Versatile Build Kit,简称VBK)
-3D图学超级计算机的芯片架构与版图设计流程
C.芯片开发套件(Versatile Development Kit,简称VDK)
-3D图学超级计算机的芯片应用开发(即应用到芯片映射)设计流程
D.系统验证套件(Versatile Verification Kit,简称VVK)
-3D图学超级计算机的系统验证流程
E.可重构3D系统芯片全定制设计(Reconfigurable 3D System-on-Chip Full-Custom Design)流程
-产生芯片流片所需的GDSII文档
利用VDS的这5个流程(A-E),完成本发明的3D图学超级计算机的设计。
上述方案中,所述的3D图学超级计算机的设计流程启自于VAK设计套件中针对3D目标应用利用C++编程语言描述的一个3D系统。该描述利用VAK的工具转换为一个用硬件描述语言(Hardware Description Language,简称HDL)描述的系统。该HDL描述,经由VDK中的综合(Synthesis)-映射(Map)-布局(Place)-布线(Route)-码流产生(Bit StreamGeneration)的处理被分割而映射至一个可重构3D图学系统芯片阵列中而得到属于各个芯片的码流,再将所得的个别码流用VVK的下载工具以JTAG边界扫描链(JTAG Boundary ScanChain)的方式存储至阵列的各个芯片中。
整个VAK-VBK-VDK-VVK的流程,从芯片与系统的架构定义产生到码流产生与下载而最终3D图学系统设计完成,将经过多次系统级架构参数值与芯片级参数值的反复调整,直到3D应用设计、可重构3D图学系统芯片设计与3D系统卡设计能相互配合而满足3D图学应用在速度、散热、芯片个数与成本上的总体要求。
上述方案中,所述的3DX-FPGA的设计流程分成两部分:应用逻辑部分与应用平台部分。应用逻辑部分采取3D数据流机的设计流程。
应用平台部分采取3DX-FPGA的设计流程。
上述方案中,所述的各个3DX-FPGA是一个具有两层逻辑结构的电路,上层的可重构层电路与下层的逻辑层电路并存而相互叠加成为一体,形成一个叠加而紧密连接的完整结构。
上述方案中,所述的3DX-FPGA的逻辑层电路是一个具有X-Y矩阵排列的逻辑模块阵列,该阵列由四面环绕的输入-输出模块环与被输入-输出模块环包围的核心逻辑矩阵模块阵列(Core Logic Block Matrix Array)组成。
上述方案中,所述的3DX-FPGA的输入-输出模块环由多个可重构输入-输出模块无缝连接形成一个环状结构。
上述方案中,所述的3DX-FPGA的核心逻辑矩阵模块阵列由多个可重构模块以X-Y矩阵形式排列而被无缝连接的沟道模块所间隔。
上述方案中,所述的3DX-FPGA的输入-输出模块环、核心逻辑矩阵模块阵列与无缝连接的沟道模块阵列组合成一个在芯片结构上近似正方形的模块矩阵,而模块与所有邻近模块的连接皆为无缝连接。如此,所有前述软件的操作,包括VAK、VBK、VDK、VVK以及芯片与系统板的版图设计都基于芯片级与系统板级的矩阵型架构。
上述方案中,所述的3DX-FPGA的核心逻辑矩阵模块阵列由多种可重构模块组成。每一种核心逻辑可重构模块占据核心逻辑矩阵模块阵列的一个或多个无缝连接的Y方向的列(Column)。
上述方案中,所述的3DX-FPGA的核心逻辑矩阵模块阵列的个别不同的列由个别不同类型的可重构模块组成。可重构模块的类型包括:
(1)可重构逻辑模块(Reconfigurable Logic Block)
(2)可重构乘法器模块(Reconfigurable Multiplier Block)
(3)可重构浮点ALU模块(Reconfigurable Floating-Point ALU Block)
(4)可重构RAM模块(Reconfigurable RAM Block)
(5)可重构SDRAM控制模块(Reconfigurable SDRAM Control Block)
(6)可重构PCIE模块(Reconfigurable PCIE Block)
(7)可重构全局信号模块(Reconfigurable Global Signal Block)
(8)可重构全局线模块(Reconfigurable Global Wire Block)
上述方案中,所述的3DX-FPGA的逻辑模块(1)由下列子模块组成:
(A)由8个可重构逻辑单元(Reconfigurable Logic Cell)组成的可重构逻辑逻辑核(Reconfigurable Logic Block Core)
(B)一个可重构输入局部路由池(Reconfigurable Input Local Routing Pool)
(C)一个可重构供电局部路由池(Reconfigurable Power Local Routing Pool)
(D)一个可重构全局信号局部路由池(Reconfigurable Global Signal LocalRouting Pool)
(E)一个可重构输出局部路由池(Reconfigurable Output Local Routing Pool)
上述方案中,所述的3DX-FPGA的逻辑模块的可重构逻辑单元由下列的子逻辑单元组成:
(1)改良式4输入查找表(modified 4-input look-up table)
(2)D型触发器(D-Typed Flip-Flop)
上述方案中,所述的3DX-FPGA的逻辑模块的改良式4输入查找表由两个3输入查找表CLUT3与SLUT3组成,其中CLUT3与同一可重构逻辑模块中相邻的可重构逻辑块的可重构逻辑单元的CLUT3串连而形成一个含8个CLUT3的串型混成逻辑链。同时,整个可重构逻辑模块列中的所有可重构逻辑模块的所有CLUT3与相邻的可重构逻辑模块的所有CLUT3都以串连方式链接而形成一个与可重构逻辑模块列同高度的串型3输入混成逻辑链。
上述方案中,所述的3DX-FPGA的逻辑模块(1)可以重构为:
(A)8个任意4输入的混成逻辑单元(4-Input Combinational Logic Cell)
(B)单端口分布式随机存取存储器(Single-Ported Distributed RAM)可重构为8个16位、4个32位、2个64位或一个128位的单端口分布式RAM。
(C)双端口分布式随机存取存储器(Dual-Ported Distributed RAM)
可重构为4个16位、2个32位或一个64位的双端口分布式RAM。
(D)一个16x8(深度为16,宽度为8)的寄存器文档模块(Register File Block)
多个16x8的寄存器文档模块可以并连成为深度与宽度多倍扩展的寄存器文档模块。
可与混成逻辑单元形成的控制逻辑合作而重构为FIFO型的寄存器文档模块(First-In First-Out Register File Block)。
可与混成逻辑单元形成的控制逻辑合作而重构为FILO型的寄存器文档模块(First-In Last-Out Register File Block)
(E)可重构浮点比较器(Reconfigurable Floating-Point Comparator)用以比较两个符合IEEE 754标准的32位浮点数,其输出是大于(>)、等于(=)或小于(<)。
(F)可重构多位固点比较器(Reconfigurable Fixed-Point Comparator)
用以比较两个多位的整数,其输出是大于(>)、等于(=)或小于(<)。
两个整数的位数是由应用决定而可重构的。
(G)可重构多位移位寄存器(Reconfigurable Multi-Bit Shift Register)
可重构为8个16位、4个32位、2个64位或一个128位的多位移位寄存器。
上述方案中,所述的3DX-FPGA的每一个可重构模块列由同一类型的可重构模块组成。核心逻辑矩阵模块阵列中的可重构模块列的类型分布由上述的VAK-VBK-VDK-VVK流程决定。
上述方案中,所述的3DX-FPGA的RAM模块(3)可以被重构为:
(A)单端口的SRAM模块(Single-Ported SRAM Block)
(B)双端口的RAM模块(Dual-Ported SRAM Block)
(C)FIFO RAM模块(First-In First-Out RAM Block)
(D)FILO RAM模块(First-In Last-Out RAM Block)
上述方案中,所述的3DX-FPGA的浮点ALU模块由3个可重构FPU子模块(Reconfigurable Floating-Point Unit Cell)组成。每一个可重构FPU子模块可被重构为两个符合IEEE 754标准的32位浮点数的二进制浮点数或两个24位二进制固点数的加法器、减法器、乘法器。同时,每一个浮点ALU模块的3个可重构FPU子模块可以被重构为一个符合IEEE 754标准的二进制32位浮点数除法器。
上述方案中,所述的3DX-FPGA的浮点ALU模块由3个可重构FPU子模块(Reconfigurable Floating-Point Unit Cell)组成。每一个可重构FPU子模块可被重构为两个符合IEEE 754标准的二进制32位浮点数或两个二进制24位固点数的加法器、减法器、乘法器。同时,每一个浮点ALU模块的3个可重构FPU子模块可以被重构为一个符合IEEE 754标准的二进制32位浮点数除法器。
上述方案中,所述的3DX-FPGA的浮点ALU模块由3个可重构FPU子模块(Reconfigurable Floating-Point Unit Cell)组成。每一个可重构FPU子模块可被重构为两个符合IEEE 754标准的二进制32位浮点数或两个二进制24位固点数的加法器、减法器、乘法器。同时,每一个浮点ALU模块的3个可重构FPU子模块可以被重构为两个符合IEEE 754标准的二进制32位浮点数除法器。
上述方案中,所述的3DX-FPGA的浮点ALU模块可以在输入的时钟信号的个别时钟周期内由输入的操作模式信号决定浮点ALU模块的操作模式。因此,浮点ALU模块在每一个时钟周期的操作可以在HDL描述中以微代码的(micro-coded)方式控制。因此,提供上述方案中的VAK一个容易而有效的3D渲染数据流机(3D Rendering Data Flow Machine)的数据流设计平台。
本发明的技术与现今流行的渲染农场的3D渲染技术在性能上的比较可以具体地指出本发明的技术与性能的指标:
1.速度
本发明提供用于3D图学渲染加速的可重构芯片组,与现今流行的基于CPU/GPU的3D图学软件渲染技术用的指令级循序操作相比,有源自芯片门级逻辑操作速度与平行计算的104级速度提升。
2.功耗
由于渲染农场系统采取分布式计算机群集(Distributed Computer Cluster)的方式,每一个计算机的CPU或GPU(单核或多核)由于来自遵循摩尔定律发展的超深亚微米工艺的高功耗密度(即单位面积功耗)造成系统的散热问题。
本发明提供一个从PC附加PCIe加速卡转变成的特殊应用的超级计算机,在功耗上有103级的降低。
3.体积
本发明提供一个从PC附加PCIe加速卡转变成的特殊应用的超级计算机,大幅度降低每一个节点的计算机个数。在多数的3D图学应用上,一个3D超级计算机的计算速度可以取代渲染农场1000个计算机的机群,造成体积上103级的降低。
4.成本
本发明提供一个从PC附加PCIe加速卡转变成的特殊应用的超级计算机。与渲染农场系统比较,由于渲染农场系统所需计算机的个数以及计算机运行环境大型冷却系统的配置,在成本上本发明有103级的降低。
以上性能改进数量级的估算一方面来自本发明现正进行的3D渲染仿真,同时参考George Washington University的Tarek El-Gbaxawi小组发表的The Promise of High-Performance Reconfigurable Computing(高性能可重构计算的承诺),2008 FebruaryIEEE Computer Society出版的Computer杂志。文中比较一个SGI Altix 4700附加一个RC100 RASC FPGA加速板与一个由100个处理器组成的Beowulf计算机群集。以下是SGI系统相对于Beowulf系统的性能比较:
另外,本发明提供的用于3D图学渲染加速的可重构数据流系统芯片组,与德国Saarland大学的Philipp Slusallek提出的基于ASIC固定逻辑的光线跟踪法渲染技术相比,可重构系统芯片组的可编程特性有ASIC所没有的系统设计高度灵活性的优势。这个优势将反映在3D应用系统针对个别不同应用环境与要求的优化上。
本发明提供的用于3D图学渲染加速的可重构数据流系统芯片组,与现今流行的传统FPGA芯片相比,在3D图学应用的渲染加速上,不但有类似的可重构特性,而且因提供嵌入式的浮点ALU模块与嵌入式的缓存(Cache)模块,解决3D渲染应用对高精度浮点运算与大数据缓存功能的普遍需求,使芯片逻辑密度有102倍级的提升,使芯片的运行速度有10-102倍级的提升。
3D渲染系统的渲染速度(总帧数/秒)是芯片工艺(90nm、65nm、40nm、28nm、20nm、14nm、10nm等)、渲染数据大小(100K图元、300M图元等)、画面大小(1024x768象素、1280x1024象素等)以及许多电路参数(如平行性、缓存Cache个数等)的函数。以65nm工艺(也就是2008年Intel Pentium IV的工艺)、350M图元(Boeing 777飞机模型)、1280x1024画面为例,四种技术的3D渲染速度的数量级比较:
这个估计来自Saarland大学Slusallek小组2001年-2010年的发表文献与会议报告数据(参考SaarCOR-A Hardware Architecture for Ray Tracing,Jorg Schimittler,Ingo Wald and Philipp Slusallek,Proceedings of the ACM SIGGRAPH/EurographicsConference on Graphics Hardware,2002,Saarbrucken,Germany)。我们可以相信超深亚微米芯片工艺将遵循摩尔定律带领可重构微超算进入2015年7nm CMOS工艺提供每秒32(≈4x1.36)帧的3D实时渲染速度。
综上所述,本发明公开了一种基于可重构数据流系统芯片阵列的高性能3D图学渲染加速系统及其设计方法,包括3D图学渲染加速系统的整体设计方法、所属各部件的设计方法、部件之间连接系统的设计方法、整个3D图学渲染加速系统各部件的配置方法以及整个3D图学渲染加速系统的功能验证方法与功能示范方法。参考附图23,本发明中的3D图学渲染加速系统由N(N是大于零的整数)个3D图学渲染加速卡与M(M是大于零的整数)个3D数据存储卡(简称3D存储卡)经由PC或服务器计算机系统母板上的PCIe插槽以及PCIe总线(包括北桥与南桥芯片)与CPU芯片相连。其中的3D存储卡是直接插在3D超算卡的DIMM插槽上,做为3D图学渲染加速卡的子板卡而与3DX-FPGA直接相连。
每个3D图学渲染加速卡由X乘Y个用于3D图学渲染加速的FPGA芯片(简称3DX-FPGA)以X-Y矩阵方式排列而利用串型总线互连组成。通过串型互连总线与PCIe总线的高通率(high throughput)连接,CPU/GPU的软件运作与3DX-FPGA阵列的硬件运作各自以最高速进行,利用高速数据传输而合作完成一个高速的3D渲染。换言之,通过高层的CPU/GPU的线程(thread)管理与低层的3DX-FPGA阵列的硬件计算运作的合作无间而完成一个前所未有的高速3D渲染。
每个3DX-FPGA由上层的可重构层电路与下层的逻辑层电路相互叠加成为一体。3DX-FPGA的架构由个别的3D图学渲染应用规格决定,且相对于现今通用的基于CPU芯片或GPU芯片的3D图学渲染具有104倍级的加速性能。同时,经过针对各别3D图学渲染加速应用的优化,芯片逻辑使用效率将有102倍的提升。本发明中的3D图学渲染加速系统可取代传统的基于CPU群(CPU Cluster)的超级计算机而成为多种超级计算应用的核心计算系统。这些应用包括大规模、大面积的地震波研究,大规模高速金融计算应用、复杂的流体力学计算应用以及本发明针对的3D图学渲染加速应用。
该设计方法分为5个流程:3D应用数据流设计流程(A),可重构3D图学系统芯片架构、电路行为级模型与芯片版图设计流程(B),3D应用映射设计流程(C),3D芯片级与系统级验证流程(D),全定制3D图学系统芯片流程(E)。各流程负责完成该3D渲染加速系统设计的一个关键环节。
在下文中,为使本发明的目的、技术方案和优点更加清楚明白,将通过具体的实施例并参照附图以及表格来详细说明。但是,本发明可以许多不同的形式加以实施,并不应限定于这里给出的实例,该实例的提供是为了使本发明彻底而完整,并且向熟悉本领域的人员全面地传达本发明的思想。
以下的说明,根据本发明的结构分为两部分:(一)3DX系统-可重构3D图学渲染加速系统,(二)3DX-FPGA芯片阵列-可重构3D系统芯片阵列。
说明如下:
(一)3DX系统-可重构3D图学渲染加速系统
参照图1,本发明说明书摘要中所述的可重构3D图学渲染加速系统的组成关系如下:
可重构3D图学渲染加速系统
参照图2A,现阶段的3D图学渲染都是将基于CPU/GPU的软件在Intel公司设计的PC计算平台上运行。整个3D渲染的庞大而复杂的计算任务被分解为众多的指令在CPU或GPU以串行的方式循序执行,同时将输入与输出的数据置放于CPU或GPU内的存储器(register)或与北桥相连的主内存(Host Memory)。其中,GPU芯片经由PCIe总线与CPU芯片相连而成为CPU的协处理器。
参照图2B,本发明中的3D图学渲染加速系统的一个实施例将以3DX卡取代Intel的PC计算平台上的GPU或CPU来执行3D渲染的计算任务。3D图学渲染应用软件将庞大而复杂的计算任务交给3D图学渲染加速卡以多个平行计算流同时运行的方式加速完成。在3D图学渲染中的3D数据将缓存于3DX图学渲染加速卡上以贴片或DIMM插槽形式安置的多个SDRAM芯片。
参照图3,本发明中的3D图学渲染加速系统的一个实施例的软件架构包括一个3DX的应用软件(3DX App)、一个用Python语言设计的3DX插件(xray.py)以及一个3DX控制软件xray。其中,3DX App与xray.py之间以及xray.py与xray之间的数据传输都是经由Python在PC中基于CPU的运作来联络。整个3DX卡的3D渲染加速即由3DX App所控制的xray软件利用3D图学渲染加速卡上的3DX-FPGA芯片阵列的逻辑操作来完成。
参照图4,本发明中的3D图学渲染加速系统的一个实施例的渲染处理逻辑流程说明如下:
3DX App在xray软件的Load3DS函数的控制下将3D数据从硬盘内文档(.3ds)经由南桥(South Bridge,简称SB)-北桥(North Bridge,简称NB)搬移到主内存(Host Memory),然后利用Build KD分析建立一个渲染加速的数据结构(即kd,prim0,prim1,texture);再经NB-PCIE Core-DMA-pcieapprt的路线以DMA的方式搬移到与3DX-FPGA相连的sdram(即kdsdram,prim0 sdram,prim1 sdram,texture sdram)。四个sdram的数据同时以平行方式应四个对应的cache(trav cache、list cache、int cache与texture Cache)的要求,将个别3D数据送往渲染机Renderframe的4个对应的管(Pipe):trav-list-int-shade。其中,trav-list-int的操作形成一个管线(pipeline)的处理核,称为射线跟踪核(Ray Tracing Core,简称RTC)。shade单元为输入的射线与相交图元计算对像素的颜色贡献,同时产生在相交点上发生的次级光线以及光能的源光线。
3D图学渲染软件将3D数据给予与PCIe总线连接的3D图学渲染加速系统,以多个平行计算流同时运行的方式加速完成。
参照图5,前述的3D渲染逻辑流程可用一个可扩展的逻辑架构来表述。所有的模块,包括DMA、pcieapprt、loadramb、loadreg、raygen、rayroute、hitroot、travroute、shaderoute、shade、travcache、listcache、intcache、shadecache、kdsdramctl、prim0sdramctl、prim1sdramctl、texturesdramctl,皆与图4中的同名模块相同。RTC模块代表图4中的trav-list-int三模块的集合。其中,以破折线包围的模块,包括raygen、rayroute、hitroot、travroute、shaderoute、RTC、shade,为可扩展模块。换言之,可以多次重复实例化个别的可扩展模块而构建一个具有新的可重构架构的3D图学渲染加速系统,成为一个具有新的3D渲染加速能力的3D图学渲染加速系统。
参照图6,利用上述的3D图学渲染加速系统的具有可重构性的架构构建一个最基本的3D图学渲染加速系统架构,称为X-Ray架构。X-Ray架构的3D图学渲染加速系统的组成结构如下:
3D图学渲染加速系统
其中,NX、MX、LX、KX、KX是X-Ray架构3D图学渲染加速系统的设计参数,由3D图学渲染加速系统针对应用的性价比的优化设计决定。
参照图7,利用上述的3D图学渲染加速系统的具有可重构性的架构构建一个与X-Ray架构不同的异构架构,称为G-Ray架构。G-Ray架构的shade单元中的shadecolor计算移至软件中。G-Ray架构的3DX系统如下:
3D图学渲染加速系统
其中,NG、MG、LG、KG、KG是G-Ray架构3D图学渲染加速系统的设计参数,由3D图学渲染加速系统针对应用的性价比的优化设计决定。
参照图8与图9,利用上述的3DX系统的具有可重构性的架构构建一个与X-Ray不同的异构架构,称为S-Ray架构。S-Ray架构有2个版本:A.S-Ray Lray架构B.S-Ray PSray架构;其中,S-Ray Lray架构的RTC(RTCSL)只处理lightray(光射线),S-Ray PSray架构的RTC(RTCSPS)只处理pray(主射线)与sray(次级射线)
S-Ray架构的3DX系统如下:
3D图学渲染加速系统
其中,NS、MS、LS、KSL、KSPS是S-Ray架构3DX系统的设计参数,由3DX系统针对应用的性价比的优化设计决定。
参照图10与图11,利用上述的3DX系统的具有可重构性的架构构建一个与X-Ray不同的异构架构,称为V-Ray架构。V-Ray架构有2个版本:A.V-Ray Lray架构B.V-Ray PSray架构;其中,V-Ray Lray架构的RTC(RTCVL)只处理lightray(光射线),V-Ray PSray架构的RTC(RTCVPS)只处理pray(主射线)与sray(次级射线)
V-Ray架构的3D图学渲染加速系统如下:
3D图学渲染加速系统
其中,NV、MV、LV、KVL、KVPS是V-Ray架构3D图学渲染加速系统的设计参数,由3D图学渲染加速系统针对应用的性价比的优化设计决定。
参照图12与图13,利用上述的3D图学渲染加速系统的具有可重构性的架构构建一个与X-Ray不同的异构架构,称为W-Ray架构。W-Ray架构有2个版本:A.W-Ray Lray架构B.W-Ray PSray架构;其中,W-Ray Lray架构的RTC(RTCWL)只处理lightray(光射线),W-RayPSray架构的RTC(RTCWPS)只处理pray(主射线)与sray(次级射线)
W-Ray架构的3DX系统如下:
3D图学渲染加速系统
其中,NW、MW、LW、KWL、KWPS是W-Ray架构3D图学渲染加速系统的设计参数,由3D图学渲染加速系统针对应用的性价比的优化设计决定。
在3D渲染的过程中,每个XPU有两种数据来自相邻的XPU:
1.3D数据从软件控制下的硬碟文档存入与XPU相连的3D数据存储SDRAM以备为RTC的操作提供数据。
2.每一个XPU内的着色逻辑所需的射线数据来自其他相邻的XPU。
参照图14,一个局域数据总线,GPIO总线(GPIO BUS),由46位的双数据率(DoubleData Rate,简称DDR)的数据控制线(其中的40位是数据线,6位是控制线)构成,将3DX-FPGA芯片阵列中同一行(Row)的XPU以环形方式用GPIO总线连接,利用两种模式来提供上述的两种数据传输功能:
1.pcie模式(pcie mode)-做为pcie DMA总线的延伸,用以传输SDRAM 3D数据。
2.局域总线模式(local bus mode)-为XPU内的着色逻辑所需,传送相邻的XPU的射线数据。
参照图15,一个完整的3DX-FPGA芯片阵列卡由M×N个3DX-FPGA组成,每个3DX-FPGA芯片包含1个3DX XPU(标示为XRTC(i,j))。其中,同一行(row)的M个XPU由GPIO总线相连形成一个封闭的xRTC环形结构。
参照图16,一个完整的3D图学渲染加速卡由3个3DX-FPGA芯片(标示为3DX-FPGA)组成。每一个3DX-FPGA由4个3DX-XPU组成。每一个3DX-XPU由6(LRAY架构)个或4(PSRAY架构)个RTC组成。
参照图17,一个完整的3D渲染加速卡由16个3DX-FPGA芯片(标示为3DX-FPGA)组成。在3DX-FPGA芯片阵列的外围区域设制3DX数据芯片卡插槽。每一个3DX数据芯片卡由多个SDRAM芯片组成。
参照图18,一个基于X-Ray架构的XPU由4个巨函数模块组成。各个巨函数模块由多个巨函数子模块组成。其中,RTC模块是RENDER巨函数的主要功能模块,由trav、list、int三个巨函数子模块组成。整个基于X-Ray架构的XPU的组成关系如下:
(二)3DX-FPGA芯片阵列-可重构3D系统芯片阵列
参照图19,为完成上述3D图学渲染加速系统的设计目标,本发明提供一个统一前述所有技术路线而全方位解决3DX系统设计技术问题的方法,称为3D多功能系统设计方法体系(3D Versatile Design System Methodology,简称3D VDS)。该设计方法体系由5个流程紧密合作组成。其中的四个流程(A-D)属于自动化设计流,分别由四个工具套件(ToolKit)控制。该自动化设计流程与全定制设计流(E)配合而完成一个可重构3D图学渲染加速系统的设计。
参照图20,所述的应用设计套件(VAK)有下列功能:
(1)编辑(Edit)并显示(View)应用系统的架构描述文档
-即应用系统所有巨功能模块(Megafunction Block)成分的架构参数描述文档
(2)3D数据流数据处理系统产生器(3D Dataflow Supercomputer Generator)
-根据预定的应用系统的架构描述文档中的应用规格产生完整的3D数据流数据处理系统的HDL描述文档
-根据预定的3D数据流数据处理系统数据流的架构参数定义将3D数据流数据处理系统的HDL描述文档重新划分配置进入个别的3DX-FPGA,同时产生划分后各芯片的逻辑容量与管脚个数。
参照图21,所述的芯片架构设计套件(VBK)有下列功能:
(1)编辑(Edit)并显示(View)应用系统中所有的芯片架构文档
(2)针对每一个芯片架构产生完整的晶体管级HDL与CDL描述文档
(3)针对每一个芯片架构产生完整的版图文档(GDS2)
(4)针对每一个芯片架构产生完整的配置位地图(Configuration Bit Map)文档(GDS2)
参照图22,所述的芯片开发套件(VDK)有下列(1)到(6)的功能,按顺序将3D渲染应用系统的HDL描述文档转换成码流而下载进入3D渲染芯片:
(1)综合(Synthesis)
将应用系统的HDL描述文档翻译成为芯片逻辑网表(Netlist)
(2)转换(Convert)
将应用系统的芯片逻辑网表做对应于架构转换的转换。
(3)映射(Map)
对应用系统的逻辑网表做分割与合并,形成一个逻辑模块的连接网表。
(4)布局与布线(Place and Route)
将逻辑模块的连接网表置放进芯片的模块阵列架构,并将模块间的信号置放进芯片架构中的路由资源-即局部路由池(Local Routing Pool)与沟道(Channel)。
(5)码流产生(Bit Stream Generation)
将布局与布线的结果转换成配置位(Configuration Bit),同时形成一个具有可下载格式的码流文档(Bit Stream File)。
(6)码流下载(Bit Stream Download)
将码流文档从PC的USB接口经由USB下载缆线送至应用系统的USB接口,后经USB到JTAG信号转换将码流下载进芯片。
参照图23,所述的验证套件(VVK)有下列的功能:
(1)产生测试仿真的HDL模型
包括3DX-FPGA的HDL模型与编程器(即PC编程软件或嵌入式编程器)以及测试平台(Test Bench)的HDL模型
(2)产生3D应用系统示范工程的PCIe驱动
(3)运行功能测试(Functionality Test)
产生测试机(Tester)测试所需的向量,包括边界扫描测试所需的向量
利用USB下载线或JTAG下载线运行应用系统板功能测试
(4)运行基于3D应用系统的开源3D渲染应用示范工程
-产生用于3D渲染应用的基于Python3D与C++的插件
-产生用于3D渲染应用的PCIe驱动
-运行基于3D渲染软件Pov-Ray的开源3D渲染应用Blender
-运行基于3D渲染系统3Dx的开源3D渲染应用Blender
-产生比较3D渲染应用基于软件与硬件系统的性能比较统计数字报告文档
参照图24,本发明利用并结合上述的VDS的E.3DX-FPGA集成电路设计流程与B.VBK流程而完成一个完整的3DX-FPGA的芯片设计GDSII文档,以供晶圆流片流程进一步完成3DX-FPGA芯片生产。
参照图25,本发明的VDS是一个利用Python语言结合多个基于C语言的窗口(Window)软件。它的GUI包含四个设计套件的接口-VAK、VBK、VDK、VVK。
至此,已经结合附图对本发明实施例进行了详细描述。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属技术领域中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。
依据以上描述,本领域技术人员应当对本发明基于可重构数据流系统芯片组的3D图学渲染加速系统有了清楚的认识。
再者,单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。
说明书与权利要求中所使用的序数例如“第一”、“第二”、“第三”等的用词,以修饰相应的元件,其本身并不意味着该元件有任何的序数,也不代表某一元件与另一元件的顺序、或是制造方法上的顺序,该些序数的使用仅用来使具有某命名的一元件得以和另一具有相同命名的元件能做出清楚区分。
此外,除非特别描述或必须依序发生的步骤,上述步骤的顺序并无限制于以上所列,且可根据所需设计而变化或重新安排。并且上述实施例可基于设计及可靠度的考虑,彼此混合搭配使用或与其他实施例混合搭配使用,即不同实施例中的技术特征可以自由组合形成更多的实施例。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的启示一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的相关设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
本发明的实施例的所有的模块都可以是硬件结构,硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器,DNA计算机。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。并且,在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。
类似地,应当理解,为了精简本发明并帮助理解各个公开方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,公开方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (30)
1.一种基于可重构数据流系统芯片阵列的3D图学渲染加速系统,包括:单核或多核的CPU芯片;N个3D图学渲染加速卡;带有N个PCIe插槽的母板;其中:
N个3D图学渲染加速卡经由所述母板上的PCIe插槽以及PCIe总线与所述CPU芯片相连;
每个3D图学渲染加速卡包括:一个3DX-FPGA芯片阵列和M个SDRAM芯片;其中,所述3DX-FPGA芯片阵列包括:X×Y个用于3D图学渲染加速的3DX-FPGA芯片;所述SDRAM芯片用于存储3D数据;
每个3DX-FPGA芯片的逻辑由K个XPU模块组成,每个XPU模块由J个射线跟踪核组成;
其中,N、X、Y、M、K、J均为大于0的整数。
2.根据权利要求1所述的3D图学渲染加速系统,还包括:
GPU芯片,该GPU芯片经由PCIe总线与CPU芯片相连而成为CPU的协处理器。
3.根据权利要求1所述的3D图学渲染加速系统,所述的3DX-FPGA芯片阵列包含的X×Y个3DX-FPGA芯片利用3D图学渲染加速卡上的焊接金属线以X-Y矩阵的形式连接。
4.根据权利要求1所述的3D图学渲染加速系统,所述3DX-FPGA芯片的设计流程分成两部分:应用逻辑部分与应用平台部分,其中:
所述应用逻辑部分采取3D数据流机(3D Dataflow Machine)的硬件语言(HardwareDescription Language,简称HDL)的设计流程;
所述应用平台部分采取3DX-FPGA全能设计流程(Versatile Design System,简称VDS)。
5.根据权利要求1所述的3D图学渲染加速系统,所述3DX-FPGA芯片是一个具有两层逻辑结构的电路;
其中,上层的可重构层电路与下层的逻辑层电路并存而相互叠加成为一体,形成一个平行叠加而相互信号紧密连接的完整应用电路。
6.根据权利要求5所述的3D图学渲染加速系统,所述的逻辑层电路是一个以X-Y二维矩阵形式排列的逻辑模块阵列;
其中,该逻辑模块阵列包括:
一个四面环绕的可重构输入-输出模块环(Reconfigurable Input-Output BlockRing);以及
一个被可重构输入-输出模块环包围的可重构核心逻辑矩阵模块阵列(Reconfigurable Core Logic Matrix Block Array)。
7.根据权利要求6所述的3D图学渲染加速系统,所述的可重构输入-输出模块环由多种不同型的输入-输出模块组成;
各个不同型的输入-输出模块的功能为实时可重构(real-time reconfigurable),即各个不同输入-输出模块体现在应用中的功能由它在3D图学渲染计算加速中的功能需求实时决定。
8.根据权利要求7所述的3D图学渲染加速系统,所述的可重构核心逻辑矩阵模块阵列由3DX-FPGA芯片上层的可重构层电路控制而重构为5个不同的巨函数模块(MegafunctionBlock):
A.PCIEC(PCIE Core)巨函数模块,其功能为:基于PCIE总线协议的DMA(Direct MemoryAccess);
B.PCIEA(PCIE Application)巨函数模块,其功能为:读写DMA数据并分配至寄存器与RAM块(RAM Block,简称RAMB);
C.SDCTL(SDRAM Control)巨函数模块,其功能为:3DX-FPGA外SDRAM的控制;
D.CACHE(Cache Memory and Cache Control)巨函数模块,其功能为:3D数据中间缓存与控制;
E.RENDER(Render Frame),其功能为:3D渲染计算模块;
其中,每一个巨函数模块都是根据不同的应用规格而可重构的。
9.根据权利要求8所述的3D图学渲染加速系统,所述的PCIEC巨函数模块包括2个巨函数子模块(Megafunction Sub-Block):
PCIEIF(PCIE Interface)巨函数子模块,其功能为:与PCIe总线相连,负责DMA巨函数子模块对PCIe总线的数据进出;
DMA(Direct Memory Access)巨函数子模块,其功能为:与PCIEAPPRT巨函数子模块相连,负责主内存与PCIEAPPRT巨函数子模块之间的大量数据进出的控制。
10.根据权利要求8所述的3D图学渲染加速系统,所述的PCIEA巨函数模块包括3个巨函数子模块:
PCIEAPPRT(PCIE APP RAYTRACE)巨函数子模块,其功能为:与LOADREG、LOADRAMB二巨函数子模块相连,负责主内存的大量数据进出LOADREG、LOADRAMB的分流/合流(multiplexing/de-multiplexing);
LOADREG(LOAD REGISTER)巨函数子模块,其功能为:送给或收自主内存的寄存器数据;
LOADRAMB(LOAD RAMB)巨函数子模块,其功能为:送给或收自主内存的存储器数据。
11.根据权利要求8所述的3D图学渲染加速系统,所述的SDCTL巨函数模块包括5个巨函数子模块:
SDCTL_FB(SDRAM CONTROL FB)巨函数子模块,其功能为:与外部的FB_SDRAM相连,负责外部的FB_SDRAM的数据读与写;
SDCTL_KD(SDRAM CONTROL KD)巨函数子模块,其功能为:与外部的KD_SDRAM相连,负责外部的KD_SDRAM的数据读与写;
SDCTL_PRIMO(SDRAM CONTROL PRIMO)巨函数子模块,其功能为:与外部的PRIMO_SDRAM相连,负责外部的PRIMO_SDRAM的数据读与写;
SDCTL_PRIM1(SDRAM CONTROL PRIM1)巨函数子模块,其功能为:与外部的PRIM1_SDRAM相连,负责外部的PRIM1_SDRAM的数据读与写;
SDCTL_TEXTURE(SDRAM CONTROL TEXTURE)巨函数子模块,其功能为:与外部的TEXTURE_SDRAM相连,负责外部的TEXTURE_SDRAM的数据读与写。
12.根据权利要求8所述的3D图学渲染加速系统,所述的CACHE巨函数模块包括4个巨函数子模块:
CACHE_TRAV(CACHE TRAV)巨函数子模块,其功能为:中间缓存应TRAV模块逻辑要求而来自外部KD_SDRAM的数据;
CACHE_LIST(CACHE LIST)巨函数子模块,其功能为:中间缓存应LIST模块逻辑要求而来自外部PRIMO_SDRAM的数据;
CACHE_INT(CACHE INT)巨函数子模块,其功能为:中间缓存应INT模块逻辑要求而来自外部PRIM1_SDRAM的数据;
CACHE_SHADE(CACHE SHADE)巨函数子模块,其功能为:中间缓存应SHADE模块逻辑要求而来自外部TEXTURE_SDRAM的数据。
13.根据权利要求8所述的3D图学渲染加速系统,所述的RENDER巨函数模块包括7个巨函数子模块:
RENDER_RAYGEN(RENDER RAYGEN)巨函数子模块,其功能为:计算并产生帧渲染(FRAMERENDER)模块所需的穿过一个像素块(Pixel Tile)的主射线(Primary Ray);
RENDER_TRAVROUTE(RENDER TRAVROUTE)巨函数子模块,其功能为:从来自RENDER_RAYGEN的主射线(Primray Rays)与RENDER_SHADE的次级射线(Secondary Rays)中为RENDER_TRAV的输入射线做选择;
RENDER_TRAV(RENDER TRAV)巨函数子模块,其功能为:循环计算并决定射线由上而下依次与输入3D情景的KD节点的相交与否,直至叶结点(leaf node)为止;
RENDER_LIST(RENDER LIST)巨函数子模块,其功能为:为输入的叶结点输出它的每一个图元(primitive);
RENDER_INT(RENDER INT)巨函数子模块,其功能为:计算并决定射线与输入图元的相交与否;
RENDER_SHADEROUTE(RENDER SHADEROUTE)巨函数子模块,其功能为:为与它连接的RENDER_SHADE模块选择射线跟踪核做为它的(射线,图元)输入来源;
RENDER_SHADE(RENDER SHADE)巨函数子模块,其功能为:
1.计算跟踪射线的着色(shadecolor)贡献;
2.计算并产生所有的光源线;
3.计算并产生次级反射或折射射线。
14.根据权利要求9至13中任一项所述的3D图学渲染加速系统:
在不同的3D应用中将不同的个别的巨函数模块与巨函数子模块映射至3DX-FPGA芯片阵列中不同的个别的成员芯片以及它的组成结构,其中,映射关系,包括各层成员的个数与成员逻辑的优化结构,都是由3D应用的性能与成本规格决定;
所述N、X、Y、M、K、J的选择与逻辑模块优化由目标应用对3D图学数据处理系统的性能、功耗、空间体积与成本的规格决定。
15.根据权利要求8所述的3D图学渲染加速系统,所述巨函数模块与3DX-FPGA芯片阵列中成员芯片的映射关系是由一个系统级的映射软件来完成,该映射软件基于预定的应用规格将整个3D应用的所有巨函数模块配置进数个指定的3DX-FPGA。
16.根据权利要求6所述的3D图学渲染加速系统,所述的可重构核心逻辑矩阵模块阵列由不同型的可重构逻辑模块列/行(Reconfigurable Logic Block Column/Row)组成,各个可重构逻辑模块列/行的成员模块,即可重构逻辑模块,是由相同的逻辑电路构成。
17.根据权利要求16所述的3D图学渲染加速系统,所述的可重构逻辑模块列/行包含以下类型:
1.可重构混成逻辑模块列(Reconfigurable Combinational Logic Block Column);
2.可重构乘法器模块列(Reconfigurable Multiplier Block Column);
3.可重构浮点ALU模块列(Reconfigurable Floating Point ALU Block Column);
4.可重构随机存取存储模块列(Reconfigurable RAM Block Column);
5.可重构SDRAM控制模块列(Reconfigurable SDRAM Control Block Column);
6.可重构PCIE模块列(Reconfigurable PCIE Block Column);
7.可重构全局信号模块列(Reconfigurable Global Signal Block Column);
8.可重构全局线模块列(Reconfigurable Global Wire Block Column);
9.可重构全局编程模块行(Reconfigurable Global Program Block Row)。
18.根据权利要求17所述的3D图学渲染加速系统,所述可重构混成逻辑模块列由多个可重构混成逻辑模块组成,各个不同的可重构混成逻辑模块是由相同的逻辑电路构成。
19.根据权利要求18所述的3D图学渲染加速系统,所述可重构混成逻辑模块由8个可重构逻辑单元(Reconfigurable Logic Element)与可重构局部路由池(ReconfigurableLocal Routing Pool)相连组成。
20.根据权利要求19所述的3D图学渲染加速系统,所述可重构逻辑单元由一个4输入查找表(4-inpit Look-Up Table、一个加法进位链电路(Adder Carry Chain Circuit)、一个D型触发器(D-Typed Flip-Flop)与两个两输入复用器(2-Input Multiplexor)组成。
21.根据权利要求20所述的3D图学渲染加速系统,所述4输入查找表由两个3输入查找表(3-input Look-Up Table),CLUT与SLUT,加上一个两输入复用器而组成。
22.根据权利要求21所述的3D图学渲染加速系统,所述两个3输入查找表(CLUT与SLUT)可经由可重构层逻辑的设计而重构为链加法器(chained adder)或链比较器(chainedcomparator)。
23.根据权利要求17所述的3D图学渲染加速系统,所述可重构混成逻辑列可重构为多位移动寄存器(Multi-Bit Shift Register)。
24.根据权利要求17所述的3D图学渲染加速系统,所述可重构浮点ALU模块列由多个可重构浮点ALU模块(Reconfigurable Floating Point ALU Block)组成;其中的可重构浮点ALU模块是一个可重构的浮点ALU ASIC电路。
25.根据权利要求24所述的3D图学渲染加速系统,所述可重构浮点ALU模块可实时改变操作码(Operation Code),在二元浮点数的加、减、乘、除四操作中任选一个,在指定的周期数内执行选中的操作。
26.根据权利要求17所述的3D图学渲染加速系统,所述的可重构随机存取存储器模块列由多个可重构随机存取存储器模块(Reconfigurable RAM Block)组成。
27.根据权利要求26所述的3D图学渲染加速系统,其中:
所述的可重构随机存取存储器模块可重构为中间缓存随机存取存储器模块(CacheRAM Block);或
所述的可重构随机存取存储器模块可重构为先入先出随机存取存储器模块(First-InFirst-Out RAM Block);或
所述的可重构随机存取存储器模块可重构为先入后出随机存取存储器模块(First-InLast-Out RAM Block);或
所述的可重构随机存取存储器模块可重构为先入先出寄存器文档(ReconfigurableFirst-In First-Out Register File)模块;或
所述的可重构随机存取存储器模块可重构为先入后出寄存器文档(First-In Last-Out Register File)模块。
28.根据权利要求17所述的3D图学渲染加速系统,其中,所述可重构SDRAM控制模块列由多个SDRAM控制模块组成。
29.根据权利要求17所述的3D图学渲染加速系统,其中,所述可重构PCIE模块列由多个PCIE模块组成。
30.根据权利要求17所述的3D图学渲染加速系统,其中:
所述可重构全局信号模块列由多个可重构全局信号模块组成;或
所述可重构全局线模块列由多个可重构全局线模块组成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710584195.2A CN107464207B (zh) | 2017-07-17 | 2017-07-17 | 基于可重构数据流系统芯片阵列的3d图学渲染加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710584195.2A CN107464207B (zh) | 2017-07-17 | 2017-07-17 | 基于可重构数据流系统芯片阵列的3d图学渲染加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107464207A true CN107464207A (zh) | 2017-12-12 |
CN107464207B CN107464207B (zh) | 2020-06-02 |
Family
ID=60546821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710584195.2A Active CN107464207B (zh) | 2017-07-17 | 2017-07-17 | 基于可重构数据流系统芯片阵列的3d图学渲染加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107464207B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153190A (zh) * | 2017-12-20 | 2018-06-12 | 福建新大陆电脑股份有限公司 | 一种人工智能微处理器 |
CN109656532A (zh) * | 2018-12-12 | 2019-04-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于uml的面向gpu片元着色任务调度方法 |
CN111090607A (zh) * | 2019-11-15 | 2020-05-01 | 安徽中骄智能科技有限公司 | 基于智能框图封装的fpga自动化开发平台 |
CN115482144A (zh) * | 2022-07-12 | 2022-12-16 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
CN117332742A (zh) * | 2023-12-01 | 2024-01-02 | 芯动微电子科技(武汉)有限公司 | 一种芯片设计阶段的仿真验证方法和装置 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007143220A3 (en) * | 2006-06-08 | 2008-10-23 | Xinghao Chen | Reconfigurable scan array structure |
CN101558426A (zh) * | 2006-12-15 | 2009-10-14 | 高通股份有限公司 | 后渲染图形缩放 |
CN101727961A (zh) * | 2008-10-29 | 2010-06-09 | 中国科学院半导体研究所 | 可编程门列阵中嵌入式可重构存储器 |
EP2026286A3 (en) * | 2007-08-15 | 2010-11-10 | Pitney Bowes, Inc. | Print architecture for driving multiple print heads |
CN101986344A (zh) * | 2009-07-28 | 2011-03-16 | Arm有限公司 | 图形处理系统 |
US20120081368A1 (en) * | 2010-09-30 | 2012-04-05 | Industry-Academic Cooperation Foundation, Yonsei University | Image rendering apparatus and method |
CN102736684A (zh) * | 2011-04-05 | 2012-10-17 | 温保成 | 可编程硬加速芯片阵列 |
CN103559357A (zh) * | 2013-11-12 | 2014-02-05 | 无锡市华磊易晶微电子有限公司 | 一种用于3d图学渲染加速的fpga芯片 |
CN104616340A (zh) * | 2013-11-04 | 2015-05-13 | 三星电子株式会社 | 射线跟踪方法和设备 |
CN106209324A (zh) * | 2016-09-18 | 2016-12-07 | 幻视互动(北京)科技有限公司 | Fpga实现的基于多频无线联网模组的智能头显设备 |
-
2017
- 2017-07-17 CN CN201710584195.2A patent/CN107464207B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007143220A3 (en) * | 2006-06-08 | 2008-10-23 | Xinghao Chen | Reconfigurable scan array structure |
CN101558426A (zh) * | 2006-12-15 | 2009-10-14 | 高通股份有限公司 | 后渲染图形缩放 |
EP2026286A3 (en) * | 2007-08-15 | 2010-11-10 | Pitney Bowes, Inc. | Print architecture for driving multiple print heads |
CN101727961A (zh) * | 2008-10-29 | 2010-06-09 | 中国科学院半导体研究所 | 可编程门列阵中嵌入式可重构存储器 |
CN101986344A (zh) * | 2009-07-28 | 2011-03-16 | Arm有限公司 | 图形处理系统 |
US20120081368A1 (en) * | 2010-09-30 | 2012-04-05 | Industry-Academic Cooperation Foundation, Yonsei University | Image rendering apparatus and method |
CN102736684A (zh) * | 2011-04-05 | 2012-10-17 | 温保成 | 可编程硬加速芯片阵列 |
CN104616340A (zh) * | 2013-11-04 | 2015-05-13 | 三星电子株式会社 | 射线跟踪方法和设备 |
CN103559357A (zh) * | 2013-11-12 | 2014-02-05 | 无锡市华磊易晶微电子有限公司 | 一种用于3d图学渲染加速的fpga芯片 |
CN106209324A (zh) * | 2016-09-18 | 2016-12-07 | 幻视互动(北京)科技有限公司 | Fpga实现的基于多频无线联网模组的智能头显设备 |
Non-Patent Citations (3)
Title |
---|
INGO WALD 等: "Interactive Global Illumination in complex and Highly Occluded Enviroments", 《EUROGRAPHICS SYMPOSIUM ON RENDERING》 * |
程龙 等: "基于光场渲染的动态3D目标重构技术", 《中国科学院研究生院学报》 * |
陈欣: "基于CPCI总线的可重构系统研究与设计", 《中国优秀硕士学位论文全文数据库(信息科技辑)》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108153190A (zh) * | 2017-12-20 | 2018-06-12 | 福建新大陆电脑股份有限公司 | 一种人工智能微处理器 |
CN109656532A (zh) * | 2018-12-12 | 2019-04-19 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于uml的面向gpu片元着色任务调度方法 |
CN109656532B (zh) * | 2018-12-12 | 2022-03-15 | 中国航空工业集团公司西安航空计算技术研究所 | 一种基于uml的面向gpu片元着色任务调度方法 |
CN111090607A (zh) * | 2019-11-15 | 2020-05-01 | 安徽中骄智能科技有限公司 | 基于智能框图封装的fpga自动化开发平台 |
CN115482144A (zh) * | 2022-07-12 | 2022-12-16 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
CN115482144B (zh) * | 2022-07-12 | 2024-03-22 | 镕铭微电子(济南)有限公司 | 图形渲染加速设备、系统及方法 |
CN117332742A (zh) * | 2023-12-01 | 2024-01-02 | 芯动微电子科技(武汉)有限公司 | 一种芯片设计阶段的仿真验证方法和装置 |
CN117332742B (zh) * | 2023-12-01 | 2024-02-23 | 芯动微电子科技(武汉)有限公司 | 一种芯片设计阶段的仿真验证方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107464207B (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10657306B1 (en) | Deep learning testability analysis with graph convolutional networks | |
CN107464207A (zh) | 基于可重构数据流系统芯片阵列的3d图学渲染加速系统 | |
Johnson et al. | The irregular z-buffer: Hardware acceleration for irregular data structures | |
CN108701368A (zh) | 用于经实施例化的几何结构的更有效的光线跟踪方法和装置 | |
Tine et al. | Vortex: Extending the RISC-V ISA for GPGPU and 3D-graphics | |
US20210158155A1 (en) | Average power estimation using graph neural networks | |
CN104239595B (zh) | 用于实现用于设计规划和架构探索的系统级设计工具的方法和装置 | |
Navarro-Hinojosa et al. | Physically based visual simulation of the Lattice Boltzmann method on the GPU: a survey | |
CN109154892A (zh) | 用于在计算环境中对数据进行本地处理的寄存器堆扩展 | |
US20220006457A1 (en) | Glitch-free multiplexer | |
CN108780585A (zh) | 用于光线追踪架构的采样模式生成的方法和装置 | |
Chen et al. | A 3-D CPU-FPGA-DRAM hybrid architecture for low-power computation | |
Trost et al. | Accelerating COBAYA3 on multi-core CPU and GPU systems using PARALUTION | |
Bensaali et al. | An FPGA implementation of 3D affine transformations | |
Schreiber et al. | GPU based simulation and visualization of fluids with free surfaces | |
Pasquali et al. | LBMHexMesh: an OpenFOAM based grid generator for the Lattice Boltzmann Method (LBM) | |
Şahin et al. | A new module design for 3D graphic transformations using generated floating-point core units. I | |
Dew et al. | Systolic array architectures for high performance CAD/CAM workstations | |
US20240135076A1 (en) | Super-optimization explorer using e-graph rewriting for high-level synthesis | |
US20230333857A1 (en) | Single instruction, multiple thread (simt) processors, methods, systems, and instructions | |
US20240126519A1 (en) | Program analysis, design space exploration and verification for high-level synthesis via e-graph rewriting | |
Dokken et al. | An introduction to general-purpose computing on programmable graphics hardware | |
US20240111353A1 (en) | Constructing hierarchical clock gating architectures via rewriting | |
US20240126558A1 (en) | Virtual multi-port memory processors, methods, systems, and instructions | |
US20230401132A1 (en) | Hardware software communication channel to support direct programming interface methods on fpga-based prototype platforms |
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 |