- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于OpenCLCPU模块设计与实现
基于OpenCLCPU模块设计与实现
摘要:OpenCL作为异构系统下程序设计的主流架构之一,已经在大量异构计算系统中应用。由于异构系统最初的用途是用于在计算机系统中加速数值计算,设计人员在OpenCL框架下?写的模块大部分是用于数值计算,以及与数值计算息息相关的图像处理。本文介绍一种通过OpenCL搭建CPU模块的方法。CPU功能模块可在部分情况下分担或接管异构系统中部分CPU的工作。同时在一些支持可重构架构的异构系统中,CPU模块可以替代异构系统中的CPU,这大大增加了异构系统的灵活度。本文涉及的CPU模块兼容MIPS32指令集。
关键词:OpenCL;异构系统;CPU设计;MIPS
中图分类号:TP311 文献标识码:A 文章编号:1007-9416(2018)02-0160-02
近年来,随着单个CPU的各方面性能都达到了极限,只靠单个或者多个通用处理器(以下简称CPU)来提高计算机系统性能的解决方案已经不适用了。专用协处理器配合CPU的组合方式成了现在增强计算机系统性能的主要途径,“CPU+专用协处理器”构建的异构系统成了当前大规模数据处理的首选解决方案。不过,由于异构系统本身最初是用于解决计算机系统数值计算过慢的问题,也使得异构系统中几乎大部分模块都是直接用于数值计算,造成了异构系统在实际应用中也仅限于用在与数值计算息息相关的图像处理,信号处理,神经网络等方面。
OpenCL全称Open Computing Language,是指开放计算语言,用于编写在异构平台上执行的程序。作为现在流行的异构系统编程框架,可以让异构系统的应用可以不局限于数值计算中,也可用于非数值运算中。系统中协处理器不仅可以通过使用高级语言进行编程,而且OpenCL把协处理器与主处理器(大部分情况下由CPU担任)统一在一个框架下编程,这使得两者的数据交换变得非常简便与灵活。在某些状况下,协处理器可以承担主处理器的工作,分摊甚至接管主处理器的工作,主处理器只要把数据直接送入协处理器即可。这不仅拓宽了异构系统的使用范围,也减轻了主处理器的负担。特别是异构系统中如果支持协处理器可重构功能,那异构系统的使用范围可以大大增加。
本文通过OpenCL架构,设计一个在“CPU+GPU”的异构系统中能够运行的CPU模块。此模块兼容开源的MIPS32指令集,易于理解与掌握,方便设计人员应用。选择MIPS架构的理由是,MIPS架构源代码公开,相关资料丰富,易于理解与掌握。现在不少大学本科计算机专业课中,通过MIPS架构来讲解计算机系统原理架构,甚至部分大学的“微机原理与接口技术”课程中的用MIPS CPU代替老旧的8086CPU。
1 异构系统架构概述
1.1 OpenCL基本介绍
OpenCL(Open Computing Language,中文名为开放计算语言)是一个在异构系统中设计应用的框架,目的是方便在异构系统下编写程序的,此异构系统可通过CPU、GPU、DSP、FPGA或其他类型的处理器与硬件加速器所组成。(见图1)
OpenCL平台模型定义了使用OpenCL的一种高层模式,这个模型如图1所示。这平台包括一个宿主机(图1中的Host),设备就是执行指令流的地方。因此OpenCL的设备通常被称为计算设备(图1中的Compute Device),计算设备可以是GPU、FPGA等任何OpenCL架构下支持的任意处理器。
OpenCL的运行步骤比较复杂。基本上分为以下步骤:
(1)初始化阶段,获取设备信息,创建上下文(用于协调主机以及计算设备与主机的一种交互机制)。
(2)创建内存对象,然后创建程序对象,同时生成内核对象。内存对象存储内核执行数据,程序对象即程序源文件或者二进制代码数据。内核对象是设备程序的入口。
(3)配置内核参数,并配置工作数组的组织形式。同时将内核对象,以及工作数组参数放入命令队列中送入协处理器中执行。
(4)返回执行结果,并释放资源,程序结束。
1.2 CPU模块基本介绍
由于本文编写的是CPU模块,在这里需要简单讲解一下CPU的工作原理。
CPU的主要运作原理是执行储存在内存中里的一系列指令。CPU工作架构有冯?诺伊曼结构(von Neumann architecture)以及哈佛结构(Harvard architecture),由于MIPS架构属于冯?诺伊曼结构(von Neumann architecture)架构,因此本文只讨论冯?诺伊曼结构的运行方式。冯?诺伊曼CPU的运作原理可分为五个阶段:提取、解码、执行、访存和写回(见图2)。
提取:CPU自动地从存储器取出指令。为此,CPU能够知道取出指令的存储器地址,提取阶
原创力文档


文档评论(0)