首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种RIB渲染压缩文件FPGA压缩/解压缩系统及硬件解压方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:西安交通大学

摘要:本发明公开了一种RIB渲染压缩文件FPGA压缩解压缩系统及硬件解压方法,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGA硬件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作,提高了解压缩的速度,降低了解压缩过程中所需功耗。

主权项:1.一种RIB渲染压缩文件FPGA压缩解压缩系统,其特征在于,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGA硬件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作;压缩模块用于将要流传送的RIB渲染压缩文件与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列由参照文件匹配序列的位置、长度表示进行替换,形成流到服务端的经压缩的RIB渲染压缩文件;FPGA硬件解压模块用于读取RIB渲染压缩文件,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件保存到不同的内容缓存中,内容缓存中的数据即为解压出的RIB渲染压缩文件的原始数据,通过FPGA硬件解压缩模块的输出端口,输送到服务端。

全文数据:一种RIB渲染压缩文件FPGA压缩解压缩系统及硬件解压方法技术领域[0001]本发明属于数据处理技术领域,具体涉及一种RIB渲染压缩文件FPGA压缩解压缩系统及硬件解压方法。背景技术[0002]动画和影视渲染是通过软件,将场景中的材质、纹理以及光线等信息构建成模型,用来生成连续而真实的图像的过程。其中,RIB渲染压缩文件是濱染软件RenderMan的脚本文件,存储着属于RenderMan接口的脚本命令,又称作RIB协议。RenderMan的应用编程接口f一系列函数,用于传递其他应用的数据,包括场景的几何属性、渲染属性等,渲染器会接受这些数据,并读取里面的控制信息来完成后续工作,而RIB渲染压缩文件就是这些函数生成的渲染任务描述文件。[0003]云渲染cloudrender与云计算类似,又被称作云渲染农场,是由渲染服务器集群负责进行渲染,而用户借助高速互联网进行远程访问,指令从用户终端发出,在服务器上执行,而渲染结果则传回用户终端。其中,RIB渲染压缩文件是建模和渲染之间的通信介质,往往需要作为通信协议在广域网传输到各个渲染服务器上。由于云渲染的发展,RIB渲染压缩文件需要更加频繁地进行传输,从而完成分布式渲染工作。[0004]现场可编程门阵列(FieldProgrammableGateArray,FPGA是主流的可编程逻辑芯片。具有硬件并行性的优势,硬件可以各自执行程序,程序不再简单地顺序执行,同样的时间内,FPGA计算能力比信号处理器DSP高出许多;同时,FPGA使用灵活,设计输入、综合、布局与布线、配置下载,就能快速将程序烧录在FPGA上,实现电路原型,验证硬件设计正确性。[0005]随着云渲染的发展,需要传输的渲染RIB渲染压缩文件数据量愈加庞大,同时广域网带宽资源有限,渲染文件数据的有效精简、高效传输和快速解压,成为了大数据环境下云植染应用热点。虽然,已经有许多针对渲染文件的压缩算法,能够达到很高的压缩率,但是这些压缩文件在软件解压时往往会占用大量资源,压缩率越高解压耗时越长,开销也越大。发明内容[0006]本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种RIB渲染压缩文件FPGA压缩解压缩系统及硬件解压方法,提高了解压缩的速度,降低了解压缩过程中所需功耗。[GGG7]本发明采用以下技术方案:[0008]一种RIB渲染压缩文件FPGA压缩解压缩系统,包括用户端,用户端用于将RIB渲染压缩文件传送到压缩模块,压缩模块为RIB渲染压缩文件通过广域网从用户端传输到服务端前的预处理模块,用于压缩从用户端流到服务端的RIB渲染压缩文件,RIB渲染压缩文件由压缩模块经过批量压缩后通过广域网向FPGA硬件解压模块传送,由FPGAS件解压模块读取压缩数据,用于实现流传送的RIB渲染压缩文件的硬件解压,并将解压结果输出至服务端,服务端用于访问渲染单元完成后续渲染工作;[0009]压缩模块用于将要流传送的RIB渲染压缩文件与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列由参照文件匹配序列的位置、长度表示进行替换,形成流到服务端的经压缩的RIB渲染压缩文件;[0010]FPGA硬件解压模块用于读取RIB渲染压缩文件,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件保存到不同的内容缓存中,内容缓存中的数据即为解压出的RIB渲染压缩文件的原始数据,通过FPGA硬件解压缩模块的输出端口,输送到服务端。[0011]具体的,压缩模块包含缓存单元,用于按顺序存放RIB渲染压缩文件流。[0012]进一步的,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,同时除第一个RIB渲染压缩文件外不参照压缩外,压缩方法选定其余每个RIB渲染压缩文件的前序文件作为当前文件的参照文件,实现向量化压缩。[0013]具体的,FPGA硬件解压模块包括网络接口,网络接口负责接收从广域网传输来的RIB渲染压缩文件,内容缓存作为被参照的数据用于其他解压进程,多个解压进程并行执行解压工作。[0014]一种RIB渲染压缩文件FPGA硬件解压方法,包括批量RIB渲染压缩文件参照压缩方法和使用硬件描述语言进行并行解压缩方法;[0015]压缩方法基于RIB渲染压缩文件之间命令的复用性和参数的重复率,选定RIB渲染压缩文件压缩过程的参照文件;基于参照文件的数据,确定一种压缩逻辑来压缩RIB渲染压缩文件数据,同时,基于当前文件自身数据,不使用参照文件,选择另一种压缩逻辑来压缩RIB渲染压缩文件数据;确定压缩字符输出格式,选择上述两种压缩逻辑中压缩率高的逻辑来输出压缩信息;确定标识方法,区分参照压缩和非参照压缩;确定标识方法,区分压缩信息和非压缩的原始字符;[0016]解压缩方法基于压缩字符信息标识,计算压缩信息在压缩文件中的位置并保存;基于计算的位置信息,确定解析压缩信息;选择VHDL语言作为硬件描述语言,基于HDL语言中进程间并行执行的特点,确定并行解压;基于RIB渲染压缩文件之间的参照关系,将多个解压进程进行信号同步。[0017]具体的,压缩方法具体包括如下:[0018]S101、在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,保存哈希值用于后续字符串比较;[0019]S102、将两个连续的RIB渲染压缩文件分别存放在压缩模块的前序缓存和后续缓存中,压缩时在缓存区查找最大重复字符串;[0020]S103、选择LZ77压缩算法作为压缩逻辑,通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能;[0021]S104、使用位示图标识压缩文件本体中压缩输出在数据中的位置;[0022]S105、输出由位示图和压缩文件本体合并的压缩rib渲染压缩文件,同时压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。[0023]进一步的,步骤S101中,同时计算每5字符的哈希值,再进行后续字符的匹配;[0024]步骤S104中,未压缩的字符字节用〇表示,连续5个1表示5字节压缩输出,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。[0025]进一步的,步骤S103中,压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,选择其中长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。[0026]具体的,解压缩具体包括如下:[0027]S201、对RIB渲染压缩文件中的位示图和压缩本体进行划分;[0028]S202、在读取位示图字符数据的同时对其进行解析,完成位置计算;[0029]S203、在步骤S202位置计算完成后,在读取压缩本体数据的同时解析得到压缩信息;[0030]S204、选择每个解压缩过程作为一个单独的进程,多个进程间并行执行解压,进程数即并行解压的并行度;[0031]S205、使用信号对并行的进程进行同步;[0032]S206、解压出的RIB渲染压缩文件通过输出端口输出到服务端。[0033]进一步的,步骤S204中,解压缩的并行度选择2,即两个进程2并行解压,两个内容缓存bufjPbuf2存放当前内容,参照缓存buf0存放参照内容。[0034]Pi开始解压第一个文件并及时把结果存进bufi,表示为字符—bufi,与此同时,P2开始解压第二个文件把结果存进buf2,表示为字符—buf2,当不需要参照时两个进程独立执行,从各自已经解压出的缓存中取数据放到各自缓存中;[0035]当P2需要参照Pd^bufi中的数据时,如果bufi己经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待?1解压相应字符串放到bufi,表示为bufbuf2;[0036]当P2需要参照自身的buf2*之前的数据时,直接从buf2中取指定长度字符串到buf2,表示为buf2—'buf2;[0037]解压完成后buf2中内容存到bufo中以便第三个文件参照使用继续执行三、四文件的解压过程。[0038]与现有技术相比,本发明至少具有以下有益效果:[0039]本发明一种RIB渲染压缩文件FPGA压缩解压缩系统,RIB渲染压缩文件需要从用户端传送到服务端,再由服务端来访问渲染单元完成后续渲染工作,在操作中,RIB濱染压缩文件由用户端传送到压缩模块,RIB渲染压缩文件由压缩模块经过批量压缩通过广域网向FPGA硬件解压模块传送,压缩数据由FPGA经由一个网络接口读取,进行快速硬件解压并且能够将解压结果输出传送到服务端,在用户端,利用RIB渲染压缩文件联系通过压缩模块实现参照压缩,达到较高的总体压缩率,在服务端,利用FPGA硬件并行性和HDL语言并行性的特点,通过解压缩模块实现批量文件并行解压,加快解压速率。[0040]进一步的,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,实现向量化的压缩,充分利用RIB文件流之间的连续性进行高效压缩,即在时间上相近的两个RIB文件因为趋向于处理连续的图像所以命令和参数具有较高的重复率。[0041]进一步的,压缩模块包含缓存单元,能够按顺序预读取RIB文件,当需要压缩下一个RIB文件数据时,压缩模块不需要再次从用户端读取RIB文件数据,直接读取缓存中数据进行压缩。同时能够临时存储参照RIB文件,向量化压缩中前一个RIB文件数据往往需要用于后续一个RIB文件参照压缩,因此需要缓存临时存储参照数据。[0042]进一步的,FPGA硬件解压模块包括网络接口,将原本在服务端和云端实现的解压过程独立出来,不仅释放了服务端资源、带宽资源,而且充分利用FPGA硬件优势加速解压过程。[0043]针对云渲染环境下,RIB渲染文件传输的有效精简、高效传输和快速解压等热点问题,本发明还公开了一种RIB渲染压缩文件FPGA硬件解压方法,包括批量RIB渲染压缩文件参照压缩方法和使用硬件描述语言进行并行解压缩方法,将FPGA硬件解压模块作为一个解压的专用部件,能够将解压过程从云端独立出来,减少云端资源开销,同时利用硬件加速解压缩。[0044]进一步的,压缩方法步骤设置能够有效地减少压缩时间、减少解压缩的开销、支持参照压缩的实现。在RIB数据输入缓存的同时执行哈希计算,可以加速后续字符串匹配过程,并且合并哈希计算过程和数据输入过程的完整数据扫描以缩短减少压缩时间;缓存步骤能够为压缩过程预读取RIB文件数据,减少等待用户端传送RIB文件的时间,同时临时存储数据用于参照,保证参照压缩的实现;位不图作为解压缩过程识别压缩输出的标志,生成位示图步骤能够以较小的空间代价换取解压速率。[0045]进一步的,压缩格式选择5字符长度,如果匹配到字符长小于压缩格式长度,压缩输出甚至会比不压缩占用更多存储空间,例如,如果压缩格式包括字符长度、位置指针一共占5字符,若匹配重复序列只有2字符,压缩前占用16位,而压缩后却占40位。因此,要求压缩过程中5字符的哈希值相同,才继续进行后续字符的匹配,通过哈希的比较,能够减少无效字符长的比较,同时能够比逐字符匹配更快速。[0046]进一步的,压缩步骤选择基于重复数据去重思想的LZ77算法,能够有效针对RIB文件大量参数、命令复用的特点替换较长重复字符串,达到较高的压缩率,与此同时LZ77算法解压开销相对较小能够保证后续解压缩过程的快速实现;压缩过程可能在前序缓存参照数据和后续缓存自身数据中均匹配到重复序列,择优选择更长的重复序列进行压缩替换,能够保证每个压缩替换都是最佳替换以达到较高的压缩率。[0047]进一步的,针对压缩RIB文件的特点设置相应解压缩步骤以实现并行解压缩过程,划分标识数据和本体数据进行后续解析和解压;转化位示图字符为整型位置信息方便解压过程数据扫描和位置比较;解析压缩信息能够得到解压缩需要的重复字符长度、重复字符位置来源等信息用于实现解压;并行计算和信号同步能够将RIB压缩文件解压过程并行化,减少解压时间开销。[0048]进一步的,充分利用FPGA充足的硬件资源以及HDL语言特性,在多个进程中实现多个RIB压缩文件的并行解压,硬件快速并行解压缩取代软件串行解压缩过程,获得较快的解压缩速率;同时每个进程分配相应的缓存临时存储解压出的数据用于参照解压和输出,实现并行解压过程。[0049]下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。附图说明[0050]图1为本发明渲染RIB渲染压缩文件流压缩解压缩系统框架图;[0051]图2为本发明压缩方法和选择的流程图;[0052]图3为本发明自身压缩的输出格式示意图;[0053]图4为本发明参照压缩的输出格式示意图;[0054]图5为本发明解压缩步骤中并行解压方法的流程图。具体实施方式[0055]RIB渲染压缩文件为ASCII编码形式,数据内容由命令+参数的组成,在一个示例中,“Option〃limits〃〃:Lntbucketsize〃[1616]”,Option是图形的一种状态,表不全局共享的图形状态,帧的改变不会改变状态信息;在另一个示例中,“Attribute〃identifier〃"name〃〃_spotLightl_spotLightShapel〃”,当前状态用Attribute表示,包括光源、几何体的材质等彳目息;还有其他例如Display全局状态下的显不命令;这些命令和参数包含了渲染需要的所有信息。在一个RIB渲染压缩文件中,数据内容以命令调用的形式多次重复出现,具有较高的可压缩性;在同一系列的渲染任务的RIB渲染压缩文件流中,数据内容以同样的命令调用的形式多次重复出现,同时命令的参数也具有较高的相似度,因此RIB渲染压缩文件之间具有较高的可参照压缩性。[0056]请参阅图1,本发明一种RIB渲染压缩文件FPGA压缩解压缩系统包括用户端、压缩模块、FPGA硬件解压模块以及服务端,RIB渲染压缩文件数据从用户端传送到服务端,再由服务端来访问渲染单元完成后续渲染工作,在操作中,RIB渲染压缩文件由用户端传送到压缩模块,RIB数据由压缩模块经过批量压缩通过广域网向FPGA硬件解压模块传送,压缩数据由FPGA经由一个网络接口(可加缓存区)读取,进行快速硬件解压并且能够将解压结果输出传送到服务端。[0057]在一个实施例中,压缩模块可以包含缓存单元以一定顺序存放RIB渲染压缩文件流。[0058]在一个实施例中,压缩模块选择RIB命令文件的时间顺序作为RIB渲染压缩文件输入压缩模块的顺序,同时除第一个RIB渲染压缩文件外不参照压缩外,压缩方法选定其余每个RIB渲染压缩文件的前序文件作为当前文件的参照文件,实现向量化的压缩。[0059]在其他实施例中,压缩模块可以乱序接收RIB渲染压缩文件,但要求压缩方法选择一个具有代表性的RIB渲染压缩文件作为其他所有RIB渲染压缩文件的参照文件,实现RIB渲染压缩文件间相互独立的压缩。[0060]压缩模块被配置为作为RIB渲染压缩文件通过广域网从用户端传输到服务端前的一个预处理模块,以压缩用于从用户端流到服务端的RIB渲染压缩文件数据。[0061]压缩模块采用一个缓存区来存储参照文件数据,其中,参照文件是需要流传送的RIB渲染压缩文件中的一个或多个,为将RIB渲染压缩文件和对应参照文件相匹配,要求参照文件按照一定顺序输入缓存区,还要求RIB渲染压缩文件按照一定顺序到达,因此,压缩模块可能需要对RIB渲染压缩文件进行排序。当执行压缩时,压缩模块将要流传送的RIB渲染压缩文件数据与缓冲区数据进行匹配,以寻找最大重复序列,RIB渲染压缩文件中的匹配序列然后可由参照文件匹配序列的位置、长度表示进行替换,以形成流到服务端的经压缩的RIB渲染压缩文件数据。[0062]FPGA硬件解压缩模块配置为一个解压缩的FPGA专用硬件模块,以实现流传送的RIB渲染压缩文件的快速硬件解压。[0063]FPGA硬件解压模块将原本在服务端和云端实现的解压过程独立出来,不仅释放了服务端资源、带宽资源,而且充分利用FPGA硬件优势加速解压过程。[0064]FPGA硬件解压模块包括一个网络接口,负责接收从广域网传输来的RIB渲染压缩文件。[0065]当执行解压缩时,FPGA硬件解压模块读取RIB渲染压缩文件的数据,计算压缩信息在其中的位置保存到位置缓存,基于位置缓存的数据解析压缩信息,然后解压缩RIB渲染压缩文件数据保存到不同的内容缓存中。[0066]其中,内容缓存可作为被参照的数据用于其他解压进程,多个解压进程并行执行解压工作。[0067]最终,内容缓存中的数据即为解压出的RIB渲染压缩文件原始数据,通过解压缩模块的输出端口,输送到服务端进行后续渲染工作。[0068]本发明提供了一种RIB渲染压缩文件FPGA硬件解压方法,基于RIB渲染压缩文件之间命令的复用性和参数的重复率,选定RIB渲染压缩文件压缩过程的参照文件;基于参照文件的数据,确定一种压缩逻辑来压缩RIB渲染压缩文件数据,同时,基于当前文件自身数据,不使用参照文件,选择另一种压缩逻辑来压缩RIB渲染压缩文件数据;确定压缩字符输出格式,选择上述两种压缩逻辑中压缩率高的逻辑来输出压缩信息;确定标识方法,区分参照压缩和非参照压缩;确定一种标识方法,区分压缩信息和非压缩的原始字符。[0069]S101、哈希计算[0070]压缩模块可以在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,同时计算每5字符的哈希值并保存,以便后续字符串比较。[0071]选择5字符是因为此示例中压缩格式选择5字符长度,如果匹配到字符长小于压缩格式长度,压缩输出甚至会比不压缩占用更多存储空间。[0072]例如,如果压缩格式包括字符长度、位置指针一共占5字符,若匹配重复序列只有2字符,压缩前占用16位,而压缩后却占40位。因此,要求压缩过程中5字符的哈希值相同,才继续进行后续字符的匹配。通过哈希的比较,能够减少无效字符长的比较,同时能够比逐字符匹配更快速。[0073]S102、缓存数据[0074]压缩模块需要两个RIB渲染压缩文件数据缓存区,前序缓存和后续缓存,分别存放两个连续的RIB渲染压缩文件数据,以便压缩时在缓存区查找最大重复字符串。[0075]前序缓存区用于参照压缩,待压缩RIB渲染压缩文件会参照前序缓存区中最大重复字符串,取其位置、长度信息替换为压缩信息;后序缓存区用于自身压缩,即存放待压缩RIB渲染压缩文件自身数据,在自身数据已扫描部分查找最大重复字符串,取其位置、长度信息替换为压缩信息。[0076]S103、压缩和选择[0077]请参阅图2,具体压缩和选择步骤如下:[0078]压缩方法选择LZ77算法作为压缩逻辑,即通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能。[0079]压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,就需要选择其中更长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。[0080]在一•个实施例中,压缩方法使用一个标志位,0和1来区分自身压缩以及参照压缩,同时在此实施例中,压缩方法选择5字节字符作为压缩格式,其中20位用作存储匹配字符地址,能够表示〇〜1,〇48,576范围的字符地址,其中14位存储重复字符长度,最大能够替换16,384长度的重复序列,图3所示为自身压缩输出格式,图4所示为参照压缩输出格式,实施例的编码方式选择ASCII码编码,即不使用每一字节的最高位存储压缩信息,最终压缩格式包括1位标志位、5位ASCII码保留位、20位匹配字符地址、14位重复字符长,共计40位。在其他实施例中,压缩格式字节大小可按照需求改变,匹配字符地址、重复字符长度可以按需分配,还可以使用非ASCII码编码进一步压缩。[0081]S104、生成位示图[0082]压缩方法使用位示图来标识压缩文件本体中压缩输出在数据中的位置。[0083]其中,未压缩的字符字节用0表示,5字节压缩输出则用连续5个1表示,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。[0084]在另一个实施例中,可以使用非ASCII码编码对位示图大小进一步压缩。[0085]S105、合并与输出[0086]最后,输出的压缩RIB渲染压缩文件是两部分的合并,一部分是位示图,另一部分是压缩文件本体。同时,压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。[0087]解压过程在FPGA硬件解压缩模块上实现,充分利用FPGA硬件解压缩模块的硬件并行性加快解压缩速率。解压缩方法选择VHDL语言作为硬件描述语言,解压缩文件素材选择上述向量化压缩过程产生的RIB压缩文件,要求FPGA硬件解压缩模块按照RIB压缩文件的生成顺序对其进行接收。[0088]S201、划分数据[0089]由于接收到的RIB压缩文件包含两部分内容:位示图和压缩本体,解压缩模块需要对两部分进行划分。[0090]在一个实施例中,两数据块之间可以通过标志字符可以是转行符进行区分,转行符之前的所有字符为位示图数据,之后的所有字符是压缩本体数据。[0091]S202、位置计算[0092]解压缩方法可以在读取位示图字符数据的同时对其进行解析。[0093]在一个实施例中,每当读取位示图一个字符时,调用VHDL语言的CASE语句将其从ASCII码字符翻译成二进制串并保存到一个缓存中,给出一个示例如下:、[0094]whenNUL=memcount:="0000000"L」白翻译元所有位示图字符之后,为了方便后续解压,遍历缓存中的二进制数据,并且计数5[连纟头1在一进制数据中的位置保存到位置缓存中,位置缓存中每一个整数表示一个压缩格式在本体数据中的位置。[0096]S2〇3、解析压缩信息[0097]在位置计算过程完成之后,解压缩方法可以在读取压缩本体数据的同时解析得到压缩信息。[0098]在一个实施例中,对本体数据的读取进行计数,g卩读取一个本体数据的字符时计数值加一。如果计数值不等于位置缓存中的压缩格式位置,则表示当前字符不是压缩字符,可以将其直接输出到内容缓存中;[0099]否则当计数值与位置缓存中的压缩格式位置相等,说明从当前字符开始的5个字符为压缩输出元组,需要调用CASE语句将字符翻译成十进制数,并计算得出压缩类型、匹配字符位置以及重复字符长度等信息,然后再从相应位置取指定长度字符串输出到内容缓存中。[0100]S2〇4、并行解压[0101]请参阅图5,在一般性的概述中,并行解压缩的步骤如下:[0102]_解压缩方法选择每个解压缩过程作为一个单独的进程process,多个进程间并行执行,进程数即并行解压的并行度,使得解压缩过程不再像压缩过程那样简单地顺序执行。[0103]在一个实施例中,解压缩的并行度选择2,即两个进程Pi2并行解压,同时需要两个内容缓存bufjPbuf2存放当前内容,还需要参照缓存buf〇存放参照内容。[0104]Pi开始解压第一个文件并及时把结果存进buh,表示为字符—buh,与此同时,P2也开始解压第二个文件把结果存进buf2,表示为字符—buf2,当不需要参照时两个进程独立执行,从各自已经解压出的缓存中取数据放到各自缓存中;[0105]当P2需要参照Pi的bufi中的数据时,如果bufi已经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待?:解压相应字符串放到bufi,表示为bufPbuf2;[0106]当P2需要参照自身的buf2中之前的数据时,直接从buf2中取指定长度字符串到buf2,表不为buf24buf2。[0107]解压完成后buf2中内容存到buf。中以便第三个文件参照使用继续执行三、四文件的解压过程。[0108]S205、信号同步[0109]由于并行的进程之间存在参照关系,需要使用信号signal对进程进行同步。[0110]在一个实施例中,存在单方向依赖关系p2依赖Pi,S卩?2需要等待?1解压出相应字符串可供参照。[0111]进程间通过内容缓存字符计数值sum作为信号来进行同步,sum即bufi中字符数,P2参照解压时判断相应字符串是否存在于bufi中,若存在(即sum=参照起始地址pos+参照字符长度len则直接从缓存中读取,若不存在(即sunKpos+len,则等待Pi解压出相应字符,再进行后续解压。[0112]在其他实施例中,如果解压过程有多个并行度,就需要多个计数值进行信号同步。[0113]S206、输出L〇114」取后,解压出的RIB渲染压缩文件通过输出端口输出到服务端。[0115]在一个实施例中,可以通过FPGA的串口输出。[0116]以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

权利要求: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硬件解压方法,其特征在于,压缩方法具体包括如下:5101、在字符串的匹配过程中使用哈希值,通过比较哈希值来加速重复字符串的匹配和查找过程,将RIB渲染压缩文件逐字符写入数据缓存,保存哈希值用于后续字符串比较;5102、将两个连续的RIB渲染压缩文件分别存放在压缩模块的前序缓存和后续缓存中,压缩时在缓存区查找最大重复字符串;5103、选择LZ77压缩算法作为压缩逻辑,通过编码器中已经出现过的相应匹配数据信息替换当前数据实现压缩功能;5104、使用位示图标识压缩文件本体中压缩输出在数据中的位置;5105、输出由位示图和压缩文件本体合并的压缩rib渲染压缩文件,同时压缩模块继续保存用于自身压缩的后续缓存区数据,将其中的数据用作下一个RIB渲染压缩文件的参照压缩数据来源,后续RIB渲染压缩文件依次压缩,实现批量RIB渲染压缩文件的向量化压缩。7.根据权利要求6所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S101中,同时计算每5字符的哈希值,再进行后续字符的匹配;步骤S104中,未压缩的字符字节用〇表示,连续5个1表示5字节压缩输出,即压缩输出位置信息用一串二进制数来表示,然后再把二进制中每7位二进制数转换成一个ASCII码字符来压缩位示图的大小,最终的位示图为ASCII码字符串。8.根据权利要求6所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S103中,压缩过程分别在前序缓存和后续缓存中匹配重复序列,如果都匹配到重复序列,选择其中长的一个重复序列,用其长度、位置信息对RIB渲染压缩文件当前数据进行替换,不断匹配待压缩的字符直至当前RIB渲染压缩文件末尾。9.根据权利要求5所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,解压缩具体包括如下:5201、对RIB渲染压缩文件中的位示图和压缩本体进行划分;5202、在读取位示图字符数据的同时对其进行解析,完成位置计算;5203、在步骤S202位置计算完成后,在读取压缩本体数据的同时解析得到压缩信息;5204、选择每个解压缩过程作为一个单独的进程,多个进程间并行执行解压,进程数即并行解压的并行度;5205、使用信号对并行的进程进行同步;5206、解压出的RIB渲染压缩文件通过输出端口输出到服务端。10.根据权利要求9所述的一种RIB渲染压缩文件FPGA硬件解压方法,其特征在于,步骤S204中,解压缩的并行度选择2,即两个进程PlNP^行解压,两个内容缓存bufdPbuf2存放当前内容,参照缓存bufo存放参照内容;Pi开始解压第一个文件并及时把结果存进buh,表示为字符—bufl,与此同时,p2开始解压第二个文件把结果存进buf2,表示为字符—buf2,当不需要参照时两个进程独立执行,从各自己经解压出的缓存中取数据放到各自缓存中;当P2需要参照Pi的bufi中的数据时,如果buh已经存在相应字符串就直接取指定长度字符串到buf2,否则P2需要等待?1解压相应字符串放到bufi,表示为bufi—buf2;当P2需要参照自身的buf2中之前的数据时,直接从buf2中取指定长度字符串到buf2,表不为buf2~buf2;解压完成后buf2中内容存到bufo中以便第三个文件参照使用,PUP2继续执行三、四文件的解压过程。

百度查询: 西安交通大学 一种RIB渲染压缩文件FPGA压缩/解压缩系统及硬件解压方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

相关技术
相关技术
相关技术
相关技术