2020, 31(10):2981-2982. DOI: 10.13328/j.cnki.jos.006072
摘要:
2020, 31(10):2983-3003. DOI: 10.13328/j.cnki.jos.006063
摘要:随着移动计算、物联网、云计算、人工智能等领域的飞速发展,也涌现出了很多新的编程语言和编译器,但是C/C++语言依旧是最受欢迎的编程语言之一,而数组是C语言最重要的数据结构之一.当在程序中通过数组下标访问数组元素时,必须确保该下标在该数组的边界之内,否则就会导致数组越界.程序中的数组越界缺陷会使得程序在运行时导致系统崩溃,甚至使攻击者可以截取控制流以执行任意恶意代码.当前针对数组越界的静态检查方法无法达到高精度的分析,尤其是无法处理复杂约束和表达式,过多的误报额外增加了开发者的负担.因此,提出了一种基于污点分析的数组越界的静态检测方法.首先,提出流敏感、上下文敏感的按需指针分析方法,实现数组长度区间分析.然后,提出按需污点分析方法,实现数组下标和数组长度污染情况的计算.最后,定义数组越界缺陷判定规则,提出使用后向数据流分析方法,检测数组下标是否越界.在进行数组越界检测的过程中,为了处理程序中的复杂约束和表达式,在分析过程中将调用约束求解器来判断约束的可满足性.如果没有发现相应的语句,则报告数组越界缺陷警报.同时,实现了自动静态分析工具Carraybound,并通过实验展示了方法的有效性.
2020, 31(10):3004-3018. DOI: 10.13328/j.cnki.jos.006064
摘要:在移动终端设备中部署机器学习模型已成为学术界和产业界的研究热点,其中重要的一环是利用用户数据训练生成模型.然而,由于数据隐私日益得到重视,特别是随着欧洲出台GDPR、我国出台《个人信息保护法》等相关法律法规,导致开发者不能任意从用户设备中获取训练数据(特别是隐私数据),从而无法保证模型训练的质量.国内外学者针对如何在隐私数据上训练神经网络模型展开了一系列研究,对其进行了总结并指出其相应的局限性.为此,提出了一种新型的面向移动终端隐私数据的机器学习模型训练模式,将所有与用户隐私数据相关的计算任务都部署在本地终端设备,无需用户以任何形式上传数据,从而保护用户隐私.这种训练模式被为自治式学习(autonomous learning).为了解决自治式学习面临的移动终端数据量不足与计算能力不足两大挑战,设计实现了自治学习系统AutLearn,通过云(公共数据,预训练)和端(隐私数据,迁移学习)协同的思想,以及终端数据增强技术,提高了终端设备上模型的训练效果.进一步地,通过模型压缩、神经网络编译器优化、运行时缓存等一系列技术,AutLearn可以极大地优化移动终端上的模型训练计算开销.基于AutLearn在两个经典的神经网络应用场景下实现了自治式学习,实验结果表明,AutLearn可以在保护隐私数据的前提下,训练模型达到甚至超过传统的集中式/联邦式模式,并且极大地减小了在移动终端上进行模型训练的计算和能耗开销.
2020, 31(10):3019-3037. DOI: 10.13328/j.cnki.jos.006068
摘要:人工智能技术的长足发展对于云计算的算力提出了更高的要求,云服务提供商在数据中心内添置了拥有大量并行计算单元的加速器,这些加速器需要与已有的虚拟化平台相结合以进行计算资源的划分.当前主流的加速器虚拟化方案是通过PCI透传的方式,但是该方式不支持细粒度的资源划分;部分特定型号的加速器还支持了时分复用的方案,通过硬件与虚拟机监视器配合划分计算资源和时间片,但是该方案可移植性差,对于任何新型加速器的适配都要重新开发,固定的资源划分策略也导致可扩展性有限;另有基于API转发的方案,通过分离式驱动的模式将虚拟机的请求转发给后端驱动处理,而转发通信的过程中存在着性能瓶颈.提出了Wormhole,一种基于C/S架构的、支持跨虚拟机快速代理执行的加速器虚拟化框架,旨在为上层用户提供高效、透明的加速器API转发虚拟化的同时保障多用户间的强隔离性.该框架利用硬件虚拟化技术,允许CPU控制流在虚拟机间快速切换而不触发任何下陷,大幅降低了虚拟机间通信带来的虚拟化性能开销.实验结果表明,Wormhole的原型系统相较于具有代表性的开源虚拟化方案GvirtuS,在经典模型的训练测试中能够有高达5倍的性能提升.
2020, 31(10):3038-3055. DOI: 10.13328/j.cnki.jos.006069
摘要:散列表(hash table)作为一类根据关键码值(key value)提供高效数据访问的数据索引结构,其广泛应用于各类计算机应用中,尤其是在对性能要求极高的系统软件、数据库以及高性能计算领域.在网络、云计算和物联网服务方面,以散列表为核心结构已经成为缓存系统的重要系统组件.然而,随着大规模数据量的大幅度增加,以多核CPU为核心设计散列表结构的系统已经逐渐出现性能瓶颈,亟需进一步改进散列表的高性能和可扩展性.随着通用图形处理器(graphic processing unit,简称GPU)的日益普及以及硬件计算能力和并发性能的大幅度提升,各类以并行计算为核心的系统软件任务在GPU上进行了优化设计并得到可观的性能提升.由于存在稀疏性和随机性,采用现有散列表的并行结构直接在GPU上应用势必会带来高频次的内存访问和频繁的总线数据传输,影响了散列表在GPU上的性能发挥.重点分析了缓存系统中散列表索引的内存访问、命中率与索引开销,提出并设计了一种适应GPU的混合访问缓存索引框架CCHT(cache cuckoo hash table),提供了两种适应不同命中率和索引开销要求的缓存策略,允许写入与查询操作并发执行,最大程度地利用了GPU硬件的计算性能与并发特性,减少了内存访问与总线传输.通过在GPU硬件上的实现与实验验证,CCHT在保证缓存命中率的同时,性能优于其他用于缓存索引的散列表.
2020, 31(10):3056-3073. DOI: 10.13328/j.cnki.jos.006070
摘要:软件可靠性是软件工程领域中的研究热点之一,故障率分析是软件可靠性的典型研究方法.然而,软件构建模式已从单体模式演进到以开源软件为代表的规模化协作模式,操作系统作为代表性产物之一,所含开源软件之间通过组合关系和依赖关系,形成了一个包含上万节点的供应关系网络.典型方法缺乏对供应关系的考量,无法准确识别和评估因此而引入的软件可靠性问题.把供应链概念体系拓展到开源软件领域,提出一种基于知识的面向开源协作模式下软件供应可靠性的管理方法:面向开源软件生态进行本体设计,构建开源软件知识图谱,实现知识的提取、存储和管理,以知识为驱动,结合传统的供应链管理方法,提出一组面向开源软件供应链的可靠性管理方法,构成一套开源软件供应链管理系统.实验以Linux操作系统发行版的构建为例,展示了开源软件供应链对操作系统可靠性的支撑能力.结果表明,开源软件供应链将有助于理清和评估大型复杂系统软件的可靠性风险.
2020, 31(10):3074-3086. DOI: 10.13328/j.cnki.jos.006071
摘要:近年来,卷积神经网络(CNN)在图像识别和分类领域的高精度表现使其在机器学习领域受到了广泛关注.然而CNN的计算与访存密集特性给需要支持各种负载的通用处理器带来了巨大压力.因此,涌现了大量CNN专用硬件加速器.它们虽然提高了效率但却缺乏灵活性.基于新兴的RISC-V架构设计了包含10条矩阵指令的专用指令集RV-CNN.通过抽象典型CNN中的计算为指令,该指令集可灵活支持CNN推理过程并具有比通用ISA更高的代码密度.在此基础上,提出了代码至指令的映射机制.通过在Xilinx ZC702上使用该指令集构建不同网络模型后发现,相比于x86处理器,RV-CNN平均具有141倍的能效和8.91倍的代码密度;相比于GPU,平均具有1.25倍的能效和1.95倍的代码密度.另外,相比于以往的CNN加速器,该设计在支持典型CNN模型的同时仍具有不错的能效.
2020, 31(10):3087-3099. DOI: 10.13328/j.cnki.jos.006065
摘要:近年来,现场可编程逻辑门阵列(FPGA)在异构计算领域因其优异的可定制性和可重配置特点吸引了工业界和学术界的广泛关注.基于FPGA的硬件加速系统设计涉及到深度的软硬件协同开发,利用软硬件各自开发工具分别开发再集成的传统开发方式具有学习门槛高,集成、测试、部署耗时长等缺陷,开发人员难以利用FPGA可快速重配置的特点来实现系统开发过程中的快速原型和快速迭代.如何让硬件加速系统的开发利用到现代软件工程和程序语言领域的成果,研究者们经历了长期的探索,首先根据相关研究总结了硬件及硬件加速系统开发工具设计的历史教训和成功经验,然后介绍设计实践,最后进行总结并提出对未来的展望.
2020, 31(10):3100-3119. DOI: 10.13328/j.cnki.jos.006066
摘要:数据中心是重要的信息基础设施,也是企业互联网应用的关键支撑.然而,目前数据中心的服务器资源利用率较低(仅为10%~20%),导致大量的资源浪费,带来了极大的额外运维成本,成为制约各大企业提升计算效能的关键问题.混部(colocation),即将在线作业与离线作业混合部署,以空闲的在线集群资源满足离线作业的计算需求,作为一种重要的技术手段,混部能够有效提升数据中心资源利用率,成为当今学术界和产业界的研究热点.分析了在线作业与离线作业的特征,探讨了在离线作业间性能干扰等混部所面临的技术挑战,从性能干扰模型、作业调度、资源隔离与资源动态分配等方面就在离线混部技术进行了综述,并以业界典型混部管理系统为例探讨了在离线混部关键技术在产业界的应用及其效果,最后对未来的研究方向进行了展望.
2020, 31(10):3120-3146. DOI: 10.13328/j.cnki.jos.006067
摘要:计算设备处理和存储日益增多的敏感信息,如口令和指纹信息等,对安全性提出更高要求.物理攻击技术的发展催生了一种通过攻击电路板级硬件组件来获取操作系统机密信息的攻击方法:电路板级物理攻击.该类攻击具有工具简单、成本低、易流程化等特点,极容易被攻击者利用形成黑色产业,是操作系统面临的新安全威胁和挑战.在处理器上扩展内存加密引擎可抵抗该类攻击,但是目前大部分计算设备并未配备该硬件安全机制.学术界和产业界提出软件方式抗电路板级物理攻击的操作系统防御技术,该类技术已成为近年来的研究热点.深入分析了该类技术的研究进展,总结其技术优势和不足,并探讨其发展趋势.首先,介绍了电路板级物理攻击的定义、威胁模型、现实攻击实例.之后,介绍软件方式抗电路板级物理攻击的操作系统防御技术所依赖的一些基础技术.然后,对该类防御技术的研究进展按照保护范围进行分类总结和归纳.最后,分析了该类防御技术的优势与不足,给出工程实现建议,并探讨该类防御技术未来的研究趋势.
2020, 31(10):3147-3166. DOI: 10.13328/j.cnki.jos.005809
摘要:由自底向上建模方法建立的协同业务过程中通常存在不一致,故对其进行正确性分析是确保其正确实施的重要手段.现有方法大多关注正确性检测,这使得协同业务过程的正确性分析过程复杂且耗时.而正确性修正方法能够避免正确性检测方法中存在的重复检测和调整,但这方面的研究较少,不能有效地应用于协同业务过程修正.为此,基于简单路径提出一种协同业务过程正确性修正方法.首先,在考虑活动同步及异步交互情况下,将部分正确协同业务过程行为抽象为完整的简单路径,并将其合并成核;然后,利用协调映射技术将核映射为修正业务过程,通过将所有的修正业务过程并发组合建立修正协同业务过程.修正协同业务过程符合协同业务过程的实际特征,且含有修正前协同业务过程中所有完整的轨迹,也未引入隐藏轨迹,从而避免了有效性确认.最后,通过实验与现有方法进行对比分析,结果表明:相对已有工作,在考虑协同业务过程实际特征的情况下,协同业务过程正确性修正方法能够更加有效地对协同业务过程进行正确性修正.
2020, 31(10):3167-3183. DOI: 10.13328/j.cnki.jos.005825
摘要:健康医疗领域是一个知识密集型的领域,临床诊断的质量主要依赖于医生所掌握的健康医疗知识以及临床经验.然而,单个医生的能力仍然非常有限,所以目前临床诊断的质量并不高.为此,提出一种基于领域语义知识库的疾病辅助诊断方法,基于Freebase中medicine主题域的知识建立了领域语义知识库,提出计算知识库中症状于疾病诊断的权重、计算与患者输入症状集相关的疾病的相关度和基于患者输入症状集推荐相关症状的算法.最后,基于随机选取的6种常见疾病的临床病历数据对所提出的方法与现有方法进行了对比评价,评价结果一方面表明了所提方法对已有方法存在的问题和不足的改进效果,另一方面也表明所提方法可以避免“冷启动”问题,可以快速支撑对大量常见疾病的辅助诊断.基于所提方法,有望为基层全科医生提供大量常见疾病的辅助诊断服务,或者为患者提供疾病自诊服务.
2020, 31(10):3184-3196. DOI: 10.13328/j.cnki.jos.005848
摘要:根据申威26010众核处理器的特点提出了基于两层分解的一维FFT众核并行算法.该算法基于迭代的Stockham FFT计算框架和Cooley-Tukey FFT算法,将大规模FFT分解成一系列的小规模FFT来计算,并通过设计合理的任务划分方式、寄存器通信、双缓冲以及SIMD向量化等与计算平台相关的优化方法来提高FFT的计算性能.最后对所提出算法的性能进行了测试,相比于单主核上运行的FFTW3.3.4库,获得了平均44.53x的加速比,最高加速比可达56.33x,且其带宽利用率最高可达83.45%.
2020, 31(10):3197-3215. DOI: 10.13328/j.cnki.jos.005810
摘要:近些年,随着定位系统和移动设备的普及,空间文本对象的数量日益庞大,基于位置的地理信息服务在人们的生活中发挥着越来越重要的作用.对于空间关键字查询搜索的研究亦如火如荼.然而,现有许多研究工作只适用于AND语义,支持OR语义的搜索研究相对较少.当用户放松对关键字匹配的要求时,支持OR语义的搜索技术显得尤为重要.针对这一问题,在聚集线性四分树的基础上,利用线性四分树上物理存储的Morton码与逻辑空间位置的对应性,提出了基于虚拟网格的VGrid算法.该算法可同时支持OR语义和AND语义.最后,通过在真实数据集上进行大量实验,验证了所提算法的有效性和高效性.
2020, 31(10):3216-3237. DOI: 10.13328/j.cnki.jos.005852
摘要:时间序列数据广泛产生于科技和经济的多个领域.基于符号傅里叶近似(symbolic Fourier approximation)和滑动窗口的定长单词抽取算法是目前时间序列特征字典构建过程中最有效的特征生成算法之一,但是该算法在特征生成过程中不能根据不同滑动窗口长度动态地选择保留的最优傅里叶值的个数,而且特征字典构建过程中缺少从生成的海量特征中对鉴别性特征进行有效选择的算法.为此,提出一种鉴别性特征字典构建算法.首先,提出一种针对不同长度滑动窗口学习最优单词长度的基于Fourier近似的可变长度单词抽取方法;其次,构建了一种新的特征鉴别性评价指标,并依据其动态阈值对生成的特征进行选择.实验结果表明,基于构建的特征字典的逻辑回归模型不仅分类精度高,而且可以有效发现预测过程中的鉴别性特征.
2020, 31(10):3238-3250. DOI: 10.13328/j.cnki.jos.005805
摘要:在三方口令认证密钥交换(三方PAKE)协议中,每个用户仅仅需要和服务器共享一个口令,就可以在服务器的协助下与他人进行安全的密钥交换.由于有效地减少了用户管理口令的负担,三方PAKE协议在大规模用户集的安全通信中受到了较多关注.然而,已有的三方PAKE协议大多关注的是服务器利用明文存储用户口令的情形,没有考虑服务器口令文件泄露所造成的巨大威胁.在服务器端存放的是相应于用户口令的验证元的情形下,研究三方PAKE协议的分析和设计.首先分析了一个最近提出的基于验证元的三方PAKE协议,指出该协议易于遭受离线字典攻击,因此未能达到所宣称的安全性;其次,在分析已有协议设计缺陷的基础上,提出了一个新的基于验证元的三方PAKE协议,并在标准模型下证明了所设计的协议的安全性,与已有协议的比较表明,新提出的协议在提供了更高安全性的同时具有可接受的计算和通信效率.
2020, 31(10):3251-3265. DOI: 10.13328/j.cnki.jos.005803
摘要:主要针对近年来流行的基于物理及数据驱动的各种流体动画模拟算法及其应用给出了一个全面的前沿性综述.首先,对传统的基于物理的流体模拟加速方法进行了综述和总结,同时给出了此类方法中各种算法的优劣性分析;其次,对现有的基于数据驱动的多种算法进行了综述和分析.特别地,将现有的数据驱动方法归结为3类,即数据插值法、数据预计算方法和基于深度学习的方法.并且,进一步讨论了基于数据驱动的流体动画模拟算法的几个关键问题以及其研究趋势与方向.
2020, 31(10):3266-3279. DOI: 10.13328/j.cnki.jos.005804
摘要:针对现有网格曲面曲线设计方法鲁棒性差、收敛慢、适用范围窄等不足,提出一种基于距离约束的新方法.该方法将复杂的流形约束转化为距离约束,并与光滑、插值(逼近)约束共同描述成优化问题.求解时,用切平面逼近局部曲面,并将距离约束松弛成用点到切平面的距离.由于计算距离所用的曲线上的点与其对应的切点相互依赖,采用“整体-局部”交替迭代的策略,并运用Gauss-Newton法的思想控制其收敛行为:整体阶段,通过距离近似将其松弛成凸优化问题求解迭代步长;局部阶段,采用鲁棒高效的投影法将优化后的曲线映射到曲面以更新切平面;最后,利用切割平面法将所有处于松弛状态的折线映射到网格曲面.实验结果表明:该方法与现有方法相比,在效率、鲁棒性、可控性、应用范围等方面均表现出优势.
2020, 31(10):3280-3294. DOI: 10.13328/j.cnki.jos.006060
摘要:基于位置动力学提出局部各向异性的薄壳收缩变形方法.首先针对基于位置动力学变形模拟方法的材质局限性的不足,提出薄壳收缩变形的弹性变形能,实现了多材质的弹性收缩变形.其次,针对薄壳收缩变形过程中的抖动问题,给出适当的弯曲能系数,实现了稳定的收缩变形.第三,针对薄壳局部类球面结构收缩变形缓慢且细微的不足,定义了局部各向异性ARAP变形能等,实现了薄壳局部类球结构的快速、显著、稳定的收缩变形.最后以轴向平行包围盒与非渗透滤波器作为碰撞检测的预处理,剔除不可能发生碰撞的图元对,提高了收缩变形过程中的碰撞检测效率.相关实验结果表明,提出的薄壳收缩变形算法适用于多种材质模型以及多种各向异性能量,且有效地解决了抖动及局部类球结构收缩变形缓慢且不显著等问题.
2020, 31(10):3295-3308. DOI: 10.13328/j.cnki.jos.005800
摘要:随着国家高性能计算环境各个节点产生日志数量的不断增加,采用传统的人工方式进行异常日志分析已不能满足日常的分析需求.提出一种异常日志流量模式的定义方法:同一节点相同时间片内日志类型的有序排列代表了一种日志流量模式,并以该方法为出发点,实现了一个异常日志流量模式检测方法,用来自动挖掘异常日志流量模式.该方法从系统日志入手,根据日志内容的文本相似度进行自动分类.然后将相同时间片内日志各个类型出现的次数作为输入特征,基于主成分分析的异常检测方法对该输入进行异常检测,得到大量异常的日志类型序列.之后,使用基于最长公共子序列的距离度量对这些序列进行层次聚类,并将聚类结果进行自适应K项集算法,以得出不同异常日志流量模式的序列代表.将国家高性能计算环境半年产生的日志根据不同时间段(早、晚、夜)使用上述方法进行分析,得出了不同时间段的异常日志流量模式和相互关系.该方法也可以推广到其他分布式系统的系统日志中.
2020, 31(10):3309-3320. DOI: 10.13328/j.cnki.jos.005814
摘要:Xorg图形服务器软件在帧缓存设备上采用单线程绘制模式,难以发挥多核CPU的性能.针对多核CPU上的帧缓存设备,设计了带有互斥操作的任务队列,并按照屏幕划分的方法,实现了Xorg的矩形填充操作在帧缓存设备上基于私有任务队列的多线程并行化,并实现了主从线程负载均衡.x11perf测试结果表明,该算法在一台4核商用台式机上的加速比可以达到2.06.