您当前所在位置:首页 > 论文 > 计算机论文 > 计算机理论

浅谈GPU未来病毒运行技术前瞻论文

编辑:

2014-12-01

机会还是威胁GPU通用计算的发展

接下来,让我们先暂停一下对恶意软件的恐惧,进入GPU的世界。GPU通用计算最近几年来飞速发展,当GPU本身可编程性和灵活性大大提高后,很多人开始着手探索如何利用GPU架构进行大规模的并行计算,毕竟GPU拥有系统中最为强劲的浮点计算能力,仅仅作为3D计算显然相当可惜。但GPU通用计算需要专用API才能在GPU上完美运行。一般的图形APIMDlrectX和OpenGL等,都不能很好地进行通用计算。

对传统GPU来说,无论是GPU本身设计还是调用方式都尽可能为GPU需要执行的图形计算优化。因此你如果想利用GPU庞大的计算资源,那些需要计算的数据和变量,必须映射为图形学对象,算法处理必须被表述为像素和顶点处理的形式,假装是在进行图形计算一样。这种“假装”的形式让程序员感到很束缚。因为传统GPU缺乏方便的数据类型,基本的计算函数,以及一个一般化的内存访问模型,使得它对于习惯于工作在传统编程环境下的程序员们来说没有多少吸引力。

进入DirectX 10时代后,NVIDIA提出了CUDAfCompute UnifiedDevice Architecture)这样一个相当富有创造力的通用运算API架构。有了这个API之后,程序员就不需要在自己的大脑中“映射”各种数据,APl作为沟通桥粱已经承担了数据转换、程序编译等任务。这样一来,GPU就能很好地发挥计算效能。与此同时,AMD也提供了对应自家GPU产品的通用计算方法,被称为Stream。

CUDA由一个C语言的极小扩展集和一个运行库组成,这个运行库提供的函数能够控制GPU,以及设备专有函数和相应的数据。从相对宏观的角度看,一个CUDA程序由两部分组成,一个运行在CPU上,另一个称之为“kernel”,是运行于GPU上的并行化部分。不过GPU上的kernel是不能独立运行的,它只能依赖于CPU上的父进程调用,因此,它不能被作为一个独立的程序直接初始化。

CUDA中的kernel在运行时被划分为多个线程来执行,这些线程被组织成多个线程块,然后交由GPU的CUDA Core--也就是常说的流处理器来执行。在GeForceGPU中,每个处理单元会包含8个SIMD流处理器组。这8个SIMD流处理器组会根据一个线程调度器的调配,令多个线程块尽可能高效率、最大化地运作,保障整个GPU的运行效率。

除了编程执行外,CUDA还提供了用于在主机和GPU问进行数据交换的函数,所有的I/O动作都通过PCI-E总线进行。不仅如此,存储器操作还可以通过DMA进行,这样就可以大幅度提高CPU和GPU工作的并行程度。在内存一致性方面,主机的分页锁定内存中的一个块可以被映射到GPU的地址空间里,使得在CPU上运行的普通程序和GPU上运行的kernel能够直接访问相同的数据。

总的来说,无论是CUDA还是Stream,都是尽可能利用GPU‘性能的API。恶意软件要运行得有效率,就绕不开这两个API。

在实际应用中,代码伪装和反调试技巧常常被用于阻碍对恶意软件代码所实施的逆向分析工程。编辑老师在此也特别为朋友们编辑整理了浅谈GPU未来病毒运行技术前瞻

相关推荐:

试论网络钓鱼在中国互联网现状论文 

试论OA系统的应用实施论文 

标签:计算机理论

免责声明

精品学习网(51edu.com)在建设过程中引用了互联网上的一些信息资源并对有明确来源的信息注明了出处,版权归原作者及原网站所有,如果您对本站信息资源版权的归属问题存有异议,请您致信qinquan#51edu.com(将#换成@),我们会立即做出答复并及时解决。如果您认为本站有侵犯您权益的行为,请通知我们,我们一定根据实际情况及时处理。