CN108287877A - 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 - Google Patents
一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 Download PDFInfo
- Publication number
- CN108287877A CN108287877A CN201810002584.4A CN201810002584A CN108287877A CN 108287877 A CN108287877 A CN 108287877A CN 201810002584 A CN201810002584 A CN 201810002584A CN 108287877 A CN108287877 A CN 108287877A
- Authority
- CN
- China
- Prior art keywords
- rib
- compression
- decompression
- compressed
- compressed file
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/04—Protocols for data compression, e.g. ROHC
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Graphics (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种RIB渲染压缩文件FPGA压缩/解压缩系统及硬件解压方法,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGA硬件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作,提高了解压缩的速度,降低了解压缩过程中所需功耗。
Description
技术领域
本发明属于数据处理技术领域,具体涉及一种RIB渲染压缩文件FPGA压缩/解压缩系统及硬件解压方法。
背景技术
动画和影视渲染是通过软件,将场景中的材质、纹理以及光线等信息构建成模型,用来生成连续而真实的图像的过程。其中,RIB渲染压缩文件是渲染软件RenderMan的脚本文件,存储着属于RenderMan接口的脚本命令,又称作RIB协议。RenderMan的应用编程接口有一系列函数,用于传递其他应用的数据,包括场景的几何属性、渲染属性等,渲染器会接受这些数据,并读取里面的控制信息来完成后续工作,而RIB渲染压缩文件就是这些函数生成的渲染任务描述文件。
云渲染(cloudrender)与云计算类似,又被称作云渲染农场,是由渲染服务器集群负责进行渲染,而用户借助高速互联网进行远程访问,指令从用户终端发出,在服务器上执行,而渲染结果则传回用户终端。其中,RIB渲染压缩文件是建模和渲染之间的通信介质,往往需要作为通信协议在广域网传输到各个渲染服务器上。由于云渲染的发展,RIB渲染压缩文件需要更加频繁地进行传输,从而完成分布式渲染工作。
现场可编程门阵列(Field Programmable Gate Array,FPGA)是主流的可编程逻辑芯片。具有硬件并行性的优势,硬件可以各自执行程序,程序不再简单地顺序执行,同样的时间内,FPGA计算能力比信号处理器(DSP)高出许多;同时,FPGA使用灵活,设计输入、综合、布局与布线、配置下载,就能快速将程序烧录在FPGA上,实现电路原型,验证硬件设计正确性。
随着云渲染的发展,需要传输的渲染RIB渲染压缩文件数据量愈加庞大,同时广域网带宽资源有限,渲染文件数据的有效精简、高效传输和快速解压,成为了大数据环境下云渲染应用热点。虽然,已经有许多针对渲染文件的压缩算法,能够达到很高的压缩率,但是这些压缩文件在软件解压时往往会占用大量资源,压缩率越高解压耗时越长,开销也越大。
发明内容
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种RIB渲染压缩文件FPGA压缩/解压缩系统及硬件解压方法,提高了解压缩的速度,降低了解压缩过程中所需功耗。
本发明采用以下技术方案:
一种RIB渲染压缩文件FPGA压缩/解压缩系统,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGA硬件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作;
压缩模块用于将要流传送的RIB渲染压缩文件与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列由参照文件匹配序列的位置、长度表示进行替换,形成流到服务端的经压缩的RIB渲染压缩文件;
FPGA硬件解压模块用于读取RIB渲染压缩文件,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件保存到不同的内容缓存中,内容缓存中的数据即为解压出的RIB渲染压缩文件的原始数据,通过FPGA硬件解压缩模块的输出端口,输送到服务端。
具体的,压缩模块包含缓存单元,用于按顺序存放RIB渲染压缩文件流。
进一步的,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,同时除第一个RIB渲染压缩文件外不参照压缩外,压缩方法选定其余每个RIB渲染压缩文件的前序文件作为当前文件的参照文件,实现向量化压缩。
具体的,FPGA硬件解压模块包括网络接口,网络接口负责接收从广域网传输来的RIB渲染压缩文件,内容缓存作为被参照的数据用于其他解压进程,多个解压进程并行执行解压工作。
一种RIB渲染压缩文件FPGA硬件解压方法,包括批量RIB渲染压缩文件参照压缩方法和使用硬件描述语言进行并行解压缩方法;
压缩方法基于RIB渲染压缩文件之间命令的复用性和参数的重复率,选定RIB渲染压缩文件压缩过程的参照文件;基于参照文件的数据,确定一种压缩逻辑来压缩RIB渲染压缩文件数据,同时,基于当前文件自身数据,不使用参照文件,选择另一种压缩逻辑来压缩RIB渲染压缩文件数据;确定压缩字符输出格式,选择上述两种压缩逻辑中压缩率高的逻辑来输出压缩信息;确定标识方法,区分参照压缩和非参照压缩;确定标识方法,区分压缩信息和非压缩的原始字符;
解压缩方法基于压缩字符信息标识,计算压缩信息在压缩文件中的位置并保存;基于计算的位置信息,确定解析压缩信息;选择VHDL语言作为硬件描述语言,基于HDL语言中进程间并行执行的特点,确定并行解压;基于RIB渲染压缩文件之间的参照关系,将多个解压进程进行信号同步。
具体的,压缩方法具体包括如下:
S101、在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,保存哈希值用于后续字符串比较;
S102、将两个连续的RIB渲染压缩文件分别存放在压缩模块的前序缓存和后续缓存中,压缩时在缓存区查找最大重复字符串;
S103、选择LZ77压缩算法作为压缩逻辑,通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能;
S104、使用位示图标识压缩文件本体中压缩输出在数据中的位置;
S105、输出由位示图和压缩文件本体合并的压缩RIB渲染压缩文件,同时压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。
进一步的,步骤S101中,同时计算每5字符的哈希值,再进行后续字符的匹配;
步骤S104中,未压缩的字符字节用0表示,连续5个1表示5字节压缩输出,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。
进一步的,步骤S103中,压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,选择其中长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。
具体的,解压缩具体包括如下:
S201、对RIB渲染压缩文件中的位示图和压缩本体进行划分;
S202、在读取位示图字符数据的同时对其进行解析,完成位置计算;
S203、在步骤S202位置计算完成后,在读取压缩本体数据的同时解析得到压缩信息;
S204、选择每个解压缩过程作为一个单独的进程,多个进程间并行执行解压,进程数即并行解压的并行度;
S205、使用信号对并行的进程进行同步;
S206、解压出的RIB渲染压缩文件通过输出端口输出到服务端。
进一步的,步骤S204中,解压缩的并行度选择2,即两个进程P1、P2并行解压,两个内容缓存buf1和buf2存放当前内容,参照缓存buf0存放参照内容。
P1开始解压第一个文件并及时把结果存进buf1,表示为字符→buf1,与此同时,P2开始解压第二个文件把结果存进buf2,表示为字符→buf2,当不需要参照时两个进程独立执行,从各自已经解压出的缓存中取数据放到各自缓存中;
当P2需要参照P1的buf1中的数据时,如果buf1已经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待P1解压相应字符串放到buf1,表示为buf1→buf2;
当P2需要参照自身的buf2中之前的数据时,直接从buf2中取指定长度字符串到buf2,表示为buf2→buf2;
解压完成后buf2中内容存到buf0中以便第三个文件参照使用,P1、P2继续执行三、四文件的解压过程。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种RIB渲染压缩文件FPGA压缩/解压缩系统,RIB渲染压缩文件需要从用户端传送到服务端,再由服务端来访问渲染单元完成后续渲染工作,在操作中,RIB渲染压缩文件由用户端传送到压缩模块,RIB渲染压缩文件由压缩模块经过批量压缩通过广域网向FPGA硬件解压模块传送,压缩数据由FPGA经由一个网络接口读取,进行快速硬件解压并且能够将解压结果输出传送到服务端,在用户端,利用RIB渲染压缩文件联系通过压缩模块实现参照压缩,达到较高的总体压缩率,在服务端,利用FPGA硬件并行性和HDL语言并行性的特点,通过解压缩模块实现批量文件并行解压,加快解压速率。
进一步的,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,实现向量化的压缩,充分利用RIB文件流之间的连续性进行高效压缩,即在时间上相近的两个RIB文件因为趋向于处理连续的图像所以命令和参数具有较高的重复率。
进一步的,压缩模块包含缓存单元,能够按顺序预读取RIB文件,当需要压缩下一个RIB文件数据时,压缩模块不需要再次从用户端读取RIB文件数据,直接读取缓存中数据进行压缩。同时能够临时存储参照RIB文件,向量化压缩中前一个RIB文件数据往往需要用于后续一个RIB文件参照压缩,因此需要缓存临时存储参照数据。
进一步的,FPGA硬件解压模块包括网络接口,将原本在服务端和云端实现的解压过程独立出来,不仅释放了服务端资源、带宽资源,而且充分利用FPGA硬件优势加速解压过程。
针对云渲染环境下,RIB渲染文件传输的有效精简、高效传输和快速解压等热点问题,本发明还公开了一种RIB渲染压缩文件FPGA硬件解压方法,包括批量RIB渲染压缩文件参照压缩方法和使用硬件描述语言进行并行解压缩方法,将FPGA硬件解压模块作为一个解压的专用部件,能够将解压过程从云端独立出来,减少云端资源开销,同时利用硬件加速解压缩。
进一步的,压缩方法步骤设置能够有效地减少压缩时间、减少解压缩的开销、支持参照压缩的实现。在RIB数据输入缓存的同时执行哈希计算,可以加速后续字符串匹配过程,并且合并哈希计算过程和数据输入过程的完整数据扫描以缩短减少压缩时间;缓存步骤能够为压缩过程预读取RIB文件数据,减少等待用户端传送RIB文件的时间,同时临时存储数据用于参照,保证参照压缩的实现;位示图作为解压缩过程识别压缩输出的标志,生成位示图步骤能够以较小的空间代价换取解压速率。
进一步的,压缩格式选择5字符长度,如果匹配到字符长小于压缩格式长度,压缩输出甚至会比不压缩占用更多存储空间,例如,如果压缩格式包括字符长度、位置指针一共占5字符,若匹配重复序列只有2字符,压缩前占用16位,而压缩后却占40位。因此,要求压缩过程中5字符的哈希值相同,才继续进行后续字符的匹配,通过哈希的比较,能够减少无效字符长的比较,同时能够比逐字符匹配更快速。
进一步的,压缩步骤选择基于重复数据去重思想的LZ77算法,能够有效针对RIB文件大量参数、命令复用的特点替换较长重复字符串,达到较高的压缩率,与此同时LZ77算法解压开销相对较小能够保证后续解压缩过程的快速实现;压缩过程可能在前序缓存参照数据和后续缓存自身数据中均匹配到重复序列,择优选择更长的重复序列进行压缩替换,能够保证每个压缩替换都是最佳替换以达到较高的压缩率。
进一步的,针对压缩RIB文件的特点设置相应解压缩步骤以实现并行解压缩过程,划分标识数据和本体数据进行后续解析和解压;转化位示图字符为整型位置信息方便解压过程数据扫描和位置比较;解析压缩信息能够得到解压缩需要的重复字符长度、重复字符位置来源等信息用于实现解压;并行计算和信号同步能够将RIB压缩文件解压过程并行化,减少解压时间开销。
进一步的,充分利用FPGA充足的硬件资源以及HDL语言特性,在多个进程中实现多个RIB压缩文件的并行解压,硬件快速并行解压缩取代软件串行解压缩过程,获得较快的解压缩速率;同时每个进程分配相应的缓存临时存储解压出的数据用于参照解压和输出,实现并行解压过程。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明渲染RIB渲染压缩文件流压缩/解压缩系统框架图;
图2为本发明压缩方法和选择的流程图;
图3为本发明自身压缩的输出格式示意图;
图4为本发明参照压缩的输出格式示意图;
图5为本发明解压缩步骤中并行解压方法的流程图。
具体实施方式
RIB渲染压缩文件为ASCII编码形式,数据内容由命令+参数的组成,在一个示例中,“Option"limits""int bucketsize"[16 16]”,Option是图形的一种状态,表示全局共享的图形状态,帧的改变不会改变状态信息;在另一个示例中,“Attribute"identifier""name""_spotLight1_spotLightShape1"”,当前状态用Attribute表示,包括光源、几何体的材质等信息;还有其他例如Display全局状态下的显示命令;这些命令和参数包含了渲染需要的所有信息。在一个RIB渲染压缩文件中,数据内容以命令调用的形式多次重复出现,具有较高的可压缩性;在同一系列的渲染任务的RIB渲染压缩文件流中,数据内容以同样的命令调用的形式多次重复出现,同时命令的参数也具有较高的相似度,因此RIB渲染压缩文件之间具有较高的可参照压缩性。
请参阅图1,本发明一种RIB渲染压缩文件FPGA压缩/解压缩系统包括用户端、压缩模块、FPGA硬件解压模块以及服务端,RIB渲染压缩文件数据从用户端传送到服务端,再由服务端来访问渲染单元完成后续渲染工作,在操作中,RIB渲染压缩文件由用户端传送到压缩模块,RIB数据由压缩模块经过批量压缩通过广域网向FPGA硬件解压模块传送,压缩数据由FPGA经由一个网络接口(可加缓存区)读取,进行快速硬件解压并且能够将解压结果输出传送到服务端。
在一个实施例中,压缩模块可以包含缓存单元以一定顺序存放RIB渲染压缩文件流。
在一个实施例中,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,同时除第一个RIB渲染压缩文件外不参照压缩外,压缩方法选定其余每个RIB渲染压缩文件的前序文件作为当前文件的参照文件,实现向量化的压缩。
在其他实施例中,压缩模块可以乱序接收RIB渲染压缩文件,但要求压缩方法选择一个具有代表性的RIB渲染压缩文件作为其他所有RIB渲染压缩文件的参照文件,实现RIB渲染压缩文件间相互独立的压缩。
压缩模块被配置为作为RIB渲染压缩文件通过广域网从用户端传输到服务端前的一个预处理模块,以压缩用于从用户端流到服务端的RIB渲染压缩文件数据。
压缩模块采用一个缓存区来存储参照文件数据,其中,参照文件是需要流传送的RIB渲染压缩文件中的一个或多个,为将RIB渲染压缩文件和对应参照文件相匹配,要求参照文件按照一定顺序输入缓存区,还要求RIB渲染压缩文件按照一定顺序到达,因此,压缩模块可能需要对RIB渲染压缩文件进行排序。当执行压缩时,压缩模块将要流传送的RIB渲染压缩文件数据与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列然后可由参照文件匹配序列的位置、长度表示进行替换,以形成流到服务端的经压缩的RIB渲染压缩文件数据。
FPGA硬件解压缩模块配置为一个解压缩的FPGA专用硬件模块,以实现流传送的RIB渲染压缩文件的快速硬件解压。
FPGA硬件解压模块将原本在服务端和云端实现的解压过程独立出来,不仅释放了服务端资源、带宽资源,而且充分利用FPGA硬件优势加速解压过程。
FPGA硬件解压模块包括一个网络接口,负责接收从广域网传输来的RIB渲染压缩文件。
当执行解压缩时,FPGA硬件解压模块读取RIB渲染压缩文件的数据,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件数据保存到不同的内容缓存中。
其中,内容缓存可作为被参照的数据用于其他解压进程,多个解压进程并行执行解压工作。
最终,内容缓存中的数据即为解压出的RIB渲染压缩文件原始数据,通过解压缩模块的输出端口,输送到服务端进行后续渲染工作。
本发明提供了一种RIB渲染压缩文件FPGA硬件解压方法,基于RIB渲染压缩文件之间命令的复用性和参数的重复率,选定RIB渲染压缩文件压缩过程的参照文件;基于参照文件的数据,确定一种压缩逻辑来压缩RIB渲染压缩文件数据,同时,基于当前文件自身数据,不使用参照文件,选择另一种压缩逻辑来压缩RIB渲染压缩文件数据;确定压缩字符输出格式,选择上述两种压缩逻辑中压缩率高的逻辑来输出压缩信息;确定标识方法,区分参照压缩和非参照压缩;确定一种标识方法,区分压缩信息和非压缩的原始字符。
S101、哈希计算
压缩模块可以在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,同时计算每5字符的哈希值并保存,以便后续字符串比较。
选择5字符是因为此示例中压缩格式选择5字符长度,如果匹配到字符长小于压缩格式长度,压缩输出甚至会比不压缩占用更多存储空间。
例如,如果压缩格式包括字符长度、位置指针一共占5字符,若匹配重复序列只有2字符,压缩前占用16位,而压缩后却占40位。因此,要求压缩过程中5字符的哈希值相同,才继续进行后续字符的匹配。通过哈希的比较,能够减少无效字符长的比较,同时能够比逐字符匹配更快速。
S102、缓存数据
压缩模块需要两个RIB渲染压缩文件数据缓存区,前序缓存和后续缓存,分别存放两个连续的RIB渲染压缩文件数据,以便压缩时在缓存区查找最大重复字符串。
前序缓存区用于参照压缩,待压缩RIB渲染压缩文件会参照前序缓存区中最大重复字符串,取其位置、长度信息替换为压缩信息;后序缓存区用于自身压缩,即存放待压缩RIB渲染压缩文件自身数据,在自身数据已扫描部分查找最大重复字符串,取其位置、长度信息替换为压缩信息。
S103、压缩和选择
请参阅图2,具体压缩和选择步骤如下:
压缩方法选择LZ77算法作为压缩逻辑,即通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能。
压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,就需要选择其中更长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。
在一个实施例中,压缩方法使用一个标志位,0和1来区分自身压缩以及参照压缩,同时在此实施例中,压缩方法选择5字节字符作为压缩格式,其中20位用作存储匹配字符地址,能够表示0~1,048,576范围的字符地址,其中14位存储重复字符长度,最大能够替换16,384长度的重复序列,图3所示为自身压缩输出格式,图4所示为参照压缩输出格式,实施例的编码方式选择ASCII码编码,即不使用每一字节的最高位存储压缩信息,最终压缩格式包括1位标志位、5位ASCII码保留位、20位匹配字符地址、14位重复字符长,共计40位。在其他实施例中,压缩格式字节大小可按照需求改变,匹配字符地址、重复字符长度可以按需分配,还可以使用非ASCII码编码进一步压缩。
S104、生成位示图
压缩方法使用位示图来标识压缩文件本体中压缩输出在数据中的位置。
其中,未压缩的字符字节用0表示,5字节压缩输出则用连续5个1表示,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。
在另一个实施例中,可以使用非ASCII码编码对位示图大小进一步压缩。
S105、合并与输出
最后,输出的压缩RIB渲染压缩文件是两部分的合并,一部分是位示图,另一部分是压缩文件本体。同时,压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。
解压过程在FPGA硬件解压缩模块上实现,充分利用FPGA硬件解压缩模块的硬件并行性加快解压缩速率。解压缩方法选择VHDL语言作为硬件描述语言,解压缩文件素材选择上述向量化压缩过程产生的RIB压缩文件,要求FPGA硬件解压缩模块按照RIB压缩文件的生成顺序对其进行接收。
S201、划分数据
由于接收到的RIB压缩文件包含两部分内容:位示图和压缩本体,解压缩模块需要对两部分进行划分。
在一个实施例中,两数据块之间可以通过标志字符(可以是转行符)进行区分,转行符之前的所有字符为位示图数据,之后的所有字符是压缩本体数据。
S202、位置计算
解压缩方法可以在读取位示图字符数据的同时对其进行解析。
在一个实施例中,每当读取位示图一个字符时,调用VHDL语言的CASE语句将其从ASCII码字符翻译成二进制串并保存到一个缓存中,给出一个示例如下:
when NUL=>mem(count):="0000000"
当翻译完所有位示图字符之后,为了方便后续解压,遍历缓存中的二进制数据,并且计数5个连续1在二进制数据中的位置保存到位置缓存中,位置缓存中每一个整数表示一个压缩格式在本体数据中的位置。
S203、解析压缩信息
在位置计算过程完成之后,解压缩方法可以在读取压缩本体数据的同时解析得到压缩信息。
在一个实施例中,对本体数据的读取进行计数,即读取一个本体数据的字符时计数值加一。如果计数值不等于位置缓存中的压缩格式位置,则表示当前字符不是压缩字符,可以将其直接输出到内容缓存中;
否则当计数值与位置缓存中的压缩格式位置相等,说明从当前字符开始的5个字符为压缩输出元组,需要调用CASE语句将字符翻译成十进制数,并计算得出压缩类型、匹配字符位置以及重复字符长度等信息,然后再从相应位置取指定长度字符串输出到内容缓存中。
S204、并行解压
请参阅图5,在一般性的概述中,并行解压缩的步骤如下:
解压缩方法选择每个解压缩过程作为一个单独的进程(process),多个进程间并行执行,进程数即并行解压的并行度,使得解压缩过程不再像压缩过程那样简单地顺序执行。
在一个实施例中,解压缩的并行度选择2,即两个进程P1、P2并行解压,同时需要两个内容缓存buf1和buf2存放当前内容,还需要参照缓存buf0存放参照内容。
P1开始解压第一个文件并及时把结果存进buf1,表示为字符→buf1,与此同时,P2也开始解压第二个文件把结果存进buf2,表示为字符→buf2,当不需要参照时两个进程独立执行,从各自已经解压出的缓存中取数据放到各自缓存中;
当P2需要参照P1的buf1中的数据时,如果buf1已经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待P1解压相应字符串放到buf1,表示为buf1→buf2;
当P2需要参照自身的buf2中之前的数据时,直接从buf2中取指定长度字符串到buf2,表示为buf2→buf2。
解压完成后buf2中内容存到buf0中以便第三个文件参照使用,P1、P2继续执行三、四文件的解压过程。
S205、信号同步
由于并行的进程之间存在参照关系,需要使用信号(signal)对进程进行同步。
在一个实施例中,存在单方向依赖关系P2依赖P1,即P2需要等待P1解压出相应字符串可供参照。
进程间通过内容缓存字符计数值sum作为信号来进行同步,sum即buf1中字符数,P2参照解压时判断相应字符串是否存在于buf1中,若存在(即sum>=参照起始地址pos+参照字符长度len)则直接从缓存中读取,若不存在(即sum<pos+len),则等待P1解压出相应字符,再进行后续解压。
在其他实施例中,如果解压过程有多个并行度,就需要多个计数值进行信号同步。
S206、输出
最后,解压出的RIB渲染压缩文件通过输出端口输出到服务端。
在一个实施例中,可以通过FPGA的串口输出。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (10)
1.一种RIB渲染压缩文件FPGA压缩/解压缩系统,其特征在于,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGA硬件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作;
压缩模块用于将要流传送的RIB渲染压缩文件与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列由参照文件匹配序列的位置、长度表示进行替换,形成流到服务端的经压缩的RIB渲染压缩文件;
FPGA硬件解压模块用于读取RIB渲染压缩文件,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件保存到不同的内容缓存中,内容缓存中的数据即为解压出的RIB渲染压缩文件的原始数据,通过FPGA硬件解压缩模块的输出端口,输送到服务端。
2.根据权利要求1所述的一种RIB渲染压缩文件FPGA压缩/解压缩系统,其特征在于,压缩模块包含缓存单元,用于按顺序存放RIB渲染压缩文件流。
3.根据权利要求1或2所述的一种RIB渲染压缩文件FPGA压缩/解压缩系统,其特征在于,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,同时除第一个RIB渲染压缩文件外不参照压缩外,压缩方法选定其余每个RIB渲染压缩文件的前序文件作为当前文件的参照文件,实现向量化压缩。
4.根据权利要求1所述的一种RIB渲染压缩文件FPGA压缩/解压缩系统,其特征在于,FPGA硬件解压模块包括网络接口,网络接口负责接收从广域网传输来的RIB渲染压缩文件,内容缓存作为被参照的数据用于其他解压进程,多个解压进程并行执行解压工作。
5.一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,包括批量RIB渲染压缩文件参照压缩方法和使用硬件描述语言进行并行解压缩方法;
压缩方法基于RIB渲染压缩文件之间命令的复用性和参数的重复率,选定RIB渲染压缩文件压缩过程的参照文件;基于参照文件的数据,确定一种压缩逻辑来压缩RIB渲染压缩文件数据,同时,基于当前文件自身数据,不使用参照文件,选择另一种压缩逻辑来压缩RIB渲染压缩文件数据;确定压缩字符输出格式,选择上述两种压缩逻辑中压缩率高的逻辑来输出压缩信息;确定标识方法,区分参照压缩和非参照压缩;确定标识方法,区分压缩信息和非压缩的原始字符;
解压缩方法基于压缩字符信息标识,计算压缩信息在压缩文件中的位置并保存;基于计算的位置信息,确定解析压缩信息;选择VHDL语言作为硬件描述语言,基于HDL语言中进程间并行执行的特点,确定并行解压;基于RIB渲染压缩文件之间的参照关系,将多个解压进程进行信号同步。
6.根据权利要求5所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,压缩方法具体包括如下:
S101、在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,保存哈希值用于后续字符串比较;
S102、将两个连续的RIB渲染压缩文件分别存放在压缩模块的前序缓存和后续缓存中,压缩时在缓存区查找最大重复字符串;
S103、选择LZ77压缩算法作为压缩逻辑,通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能;
S104、使用位示图标识压缩文件本体中压缩输出在数据中的位置;
S105、输出由位示图和压缩文件本体合并的压缩RIB渲染压缩文件,同时压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。
7.根据权利要求6所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S101中,同时计算每5字符的哈希值,再进行后续字符的匹配;
步骤S104中,未压缩的字符字节用0表示,连续5个1表示5字节压缩输出,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。
8.根据权利要求6所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S103中,压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,选择其中长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。
9.根据权利要求5所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,解压缩具体包括如下:
S201、对RIB渲染压缩文件中的位示图和压缩本体进行划分;
S202、在读取位示图字符数据的同时对其进行解析,完成位置计算;
S203、在步骤S202位置计算完成后,在读取压缩本体数据的同时解析得到压缩信息;
S204、选择每个解压缩过程作为一个单独的进程,多个进程间并行执行解压,进程数即并行解压的并行度;
S205、使用信号对并行的进程进行同步;
S206、解压出的RIB渲染压缩文件通过输出端口输出到服务端。
10.根据权利要求9所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S204中,解压缩的并行度选择2,即两个进程P1、P2并行解压,两个内容缓存buf1和buf2存放当前内容,参照缓存buf0存放参照内容;
P1开始解压第一个文件并及时把结果存进buf1,表示为字符→buf1,与此同时,P2开始解压第二个文件把结果存进buf2,表示为字符→buf2,当不需要参照时两个进程独立执行,从各自已经解压出的缓存中取数据放到各自缓存中;
当P2需要参照P1的buf1中的数据时,如果buf1已经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待P1解压相应字符串放到buf1,表示为buf1→buf2;
当P2需要参照自身的buf2中之前的数据时,直接从buf2中取指定长度字符串到buf2,表示为buf2→buf2;
解压完成后buf2中内容存到buf0中以便第三个文件参照使用,P1、P2继续执行三、四文件的解压过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810002584.4A CN108287877B (zh) | 2018-01-02 | 2018-01-02 | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810002584.4A CN108287877B (zh) | 2018-01-02 | 2018-01-02 | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108287877A true CN108287877A (zh) | 2018-07-17 |
CN108287877B CN108287877B (zh) | 2020-10-27 |
Family
ID=62834839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810002584.4A Active CN108287877B (zh) | 2018-01-02 | 2018-01-02 | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108287877B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489387A (zh) * | 2019-08-13 | 2019-11-22 | 深圳大学 | 压缩解压方法、装置、电子设备及存储介质 |
CN111427857A (zh) * | 2020-04-01 | 2020-07-17 | 西安交通大学 | 一种基于分区参照技术的fpga配置文件压缩解压方法 |
WO2021026761A1 (zh) * | 2019-08-13 | 2021-02-18 | 深圳大学 | 压缩解压方法、装置、电子设备及存储介质 |
CN114116234A (zh) * | 2022-01-24 | 2022-03-01 | 山东捷瑞数字科技股份有限公司 | 一种基于浏览器的三维场景模型解压缩加载方法 |
CN114119842A (zh) * | 2021-11-24 | 2022-03-01 | 深圳市瑞云科技有限公司 | 基于ssim、psnr算法的渲染方法、系统及计算机可读存储介质 |
CN114696837A (zh) * | 2022-02-18 | 2022-07-01 | 电子科技大学 | 面向fpga安全分析的位流解压缩方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201562462U (zh) * | 2009-04-28 | 2010-08-25 | 新思科技有限公司 | 测试多端口存储器器件、以检测多端口存储器故障的装置 |
CN102164296A (zh) * | 2011-06-16 | 2011-08-24 | 上海大学 | 基于单台dlp投影的全角视差立体成像系统及方法 |
US20120260009A1 (en) * | 2009-07-23 | 2012-10-11 | Stec, Inc. | Data storage system with compression/decompression |
CN105610447A (zh) * | 2015-10-29 | 2016-05-25 | 吴均 | 基于lz77算法的分区编码压缩方法 |
-
2018
- 2018-01-02 CN CN201810002584.4A patent/CN108287877B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201562462U (zh) * | 2009-04-28 | 2010-08-25 | 新思科技有限公司 | 测试多端口存储器器件、以检测多端口存储器故障的装置 |
US20120260009A1 (en) * | 2009-07-23 | 2012-10-11 | Stec, Inc. | Data storage system with compression/decompression |
CN102164296A (zh) * | 2011-06-16 | 2011-08-24 | 上海大学 | 基于单台dlp投影的全角视差立体成像系统及方法 |
CN105610447A (zh) * | 2015-10-29 | 2016-05-25 | 吴均 | 基于lz77算法的分区编码压缩方法 |
Non-Patent Citations (1)
Title |
---|
刘通等: "交通图像压缩的FPGA实现", 《交通运输系统工程与信息》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110489387A (zh) * | 2019-08-13 | 2019-11-22 | 深圳大学 | 压缩解压方法、装置、电子设备及存储介质 |
WO2021026761A1 (zh) * | 2019-08-13 | 2021-02-18 | 深圳大学 | 压缩解压方法、装置、电子设备及存储介质 |
CN111427857A (zh) * | 2020-04-01 | 2020-07-17 | 西安交通大学 | 一种基于分区参照技术的fpga配置文件压缩解压方法 |
CN111427857B (zh) * | 2020-04-01 | 2022-10-25 | 西安交通大学 | 一种基于分区参照技术的fpga配置文件压缩解压方法 |
CN114119842A (zh) * | 2021-11-24 | 2022-03-01 | 深圳市瑞云科技有限公司 | 基于ssim、psnr算法的渲染方法、系统及计算机可读存储介质 |
CN114119842B (zh) * | 2021-11-24 | 2022-09-06 | 深圳市瑞云科技有限公司 | 基于ssim、psnr算法的渲染方法、系统及计算机可读存储介质 |
CN114116234A (zh) * | 2022-01-24 | 2022-03-01 | 山东捷瑞数字科技股份有限公司 | 一种基于浏览器的三维场景模型解压缩加载方法 |
CN114696837A (zh) * | 2022-02-18 | 2022-07-01 | 电子科技大学 | 面向fpga安全分析的位流解压缩方法 |
CN114696837B (zh) * | 2022-02-18 | 2023-03-07 | 电子科技大学 | 面向fpga安全分析的位流解压缩方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108287877B (zh) | 2020-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108287877A (zh) | 一种rib渲染压缩文件fpga压缩/解压缩系统及硬件解压方法 | |
CN101800556B (zh) | 数据传输及编码数据字符串的方法 | |
US7443318B2 (en) | High speed context memory implementation for H.264 | |
CN105207678B (zh) | 一种改进型lz4压缩算法的硬件实现系统 | |
CN106407201B (zh) | 一种数据处理方法、装置及计算机可读存储介质 | |
CN106852185A (zh) | 基于字典的并行压缩编码器 | |
CN109842803A (zh) | 一种图像压缩的方法及装置 | |
CN111008230B (zh) | 数据存储方法、装置、计算机设备及存储介质 | |
CN111723059B (zh) | 一种数据压缩方法、装置、终端设备及存储介质 | |
CN107561564B (zh) | 一种北斗卫星信息传输的压缩实现方法 | |
CN101449462A (zh) | 基于集合关联高速缓存映射技术的高速数据压缩 | |
CN202931289U (zh) | 一种硬件lz77压缩实现系统 | |
CN114116635A (zh) | 压缩数据流的并行解压缩 | |
CN102368329A (zh) | 图形系统中纹理图像透明度通道处理系统与装置和方法 | |
CN114567331A (zh) | 一种基于lz77的压缩方法、装置及其介质 | |
CN113630125A (zh) | 数据压缩、编码解压缩方法、装置、电子设备及存储介质 | |
US7895347B2 (en) | Compact encoding of arbitrary length binary objects | |
CN113902097A (zh) | 针对稀疏化cnn神经网络模型的游程编码加速器及方法 | |
JP5549177B2 (ja) | 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置 | |
CN112818710A (zh) | 一种异步网络机器翻译请求的处理方法、装置 | |
CN113891088B (zh) | Png图像解压逻辑电路及装置 | |
CN113592701B (zh) | 将梯度压缩算法开发注册到深度学习框架中的方法及系统 | |
CN108932315A (zh) | 一种数据解压的方法以及相关装置 | |
CN104518850B (zh) | 将参考模板同步到数据流的方法和信息处理系统 | |
CN114338529A (zh) | 五元组规则匹配方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |