999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCL的CPU模塊設(shè)計與實(shí)現(xiàn)

2018-05-14 09:57:28曾亞周琦章杰

曾亞 周琦 章杰

摘要:OpenCL作為異構(gòu)系統(tǒng)下程序設(shè)計的主流架構(gòu)之一,已經(jīng)在大量異構(gòu)計算系統(tǒng)中應(yīng)用。由于異構(gòu)系統(tǒng)最初的用途是用于在計算機(jī)系統(tǒng)中加速數(shù)值計算,設(shè)計人員在OpenCL框架下編寫的模塊大部分是用于數(shù)值計算,以及與數(shù)值計算息息相關(guān)的圖像處理。本文介紹一種通過OpenCL搭建CPU模塊的方法。CPU功能模塊可在部分情況下分擔(dān)或接管異構(gòu)系統(tǒng)中部分CPU的工作。同時在一些支持可重構(gòu)架構(gòu)的異構(gòu)系統(tǒng)中,CPU模塊可以替代異構(gòu)系統(tǒng)中的CPU,這大大增加了異構(gòu)系統(tǒng)的靈活度。本文涉及的CPU模塊兼容MIPS32指令集。

關(guān)鍵詞:OpenCL;異構(gòu)系統(tǒng);CPU設(shè)計;MIPS

中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)02-0160-02

近年來,隨著單個CPU的各方面性能都達(dá)到了極限,只靠單個或者多個通用處理器(以下簡稱CPU)來提高計算機(jī)系統(tǒng)性能的解決方案已經(jīng)不適用了。專用協(xié)處理器配合CPU的組合方式成了現(xiàn)在增強(qiáng)計算機(jī)系統(tǒng)性能的主要途徑,“CPU+專用協(xié)處理器”構(gòu)建的異構(gòu)系統(tǒng)成了當(dāng)前大規(guī)模數(shù)據(jù)處理的首選解決方案。不過,由于異構(gòu)系統(tǒng)本身最初是用于解決計算機(jī)系統(tǒng)數(shù)值計算過慢的問題,也使得異構(gòu)系統(tǒng)中幾乎大部分模塊都是直接用于數(shù)值計算,造成了異構(gòu)系統(tǒng)在實(shí)際應(yīng)用中也僅限于用在與數(shù)值計算息息相關(guān)的圖像處理,信號處理,神經(jīng)網(wǎng)絡(luò)等方面。

OpenCL全稱Open Computing Language,是指開放計算語言,用于編寫在異構(gòu)平臺上執(zhí)行的程序。作為現(xiàn)在流行的異構(gòu)系統(tǒng)編程框架,可以讓異構(gòu)系統(tǒng)的應(yīng)用可以不局限于數(shù)值計算中,也可用于非數(shù)值運(yùn)算中。系統(tǒng)中協(xié)處理器不僅可以通過使用高級語言進(jìn)行編程,而且OpenCL把協(xié)處理器與主處理器(大部分情況下由CPU擔(dān)任)統(tǒng)一在一個框架下編程,這使得兩者的數(shù)據(jù)交換變得非常簡便與靈活。在某些狀況下,協(xié)處理器可以承擔(dān)主處理器的工作,分?jǐn)偵踔两庸苤魈幚砥鞯墓ぷ鳎魈幚砥髦灰褦?shù)據(jù)直接送入?yún)f(xié)處理器即可。這不僅拓寬了異構(gòu)系統(tǒng)的使用范圍,也減輕了主處理器的負(fù)擔(dān)。特別是異構(gòu)系統(tǒng)中如果支持協(xié)處理器可重構(gòu)功能,那異構(gòu)系統(tǒng)的使用范圍可以大大增加。

本文通過OpenCL架構(gòu),設(shè)計一個在“CPU+GPU”的異構(gòu)系統(tǒng)中能夠運(yùn)行的CPU模塊。此模塊兼容開源的MIPS32指令集,易于理解與掌握,方便設(shè)計人員應(yīng)用。選擇MIPS架構(gòu)的理由是,MIPS架構(gòu)源代碼公開,相關(guān)資料豐富,易于理解與掌握。現(xiàn)在不少大學(xué)本科計算機(jī)專業(yè)課中,通過MIPS架構(gòu)來講解計算機(jī)系統(tǒng)原理架構(gòu),甚至部分大學(xué)的“微機(jī)原理與接口技術(shù)”課程中的用MIPS CPU代替老舊的8086CPU。

1 異構(gòu)系統(tǒng)架構(gòu)概述

1.1 OpenCL基本介紹

OpenCL(Open Computing Language,中文名為開放計算語言)是一個在異構(gòu)系統(tǒng)中設(shè)計應(yīng)用的框架,目的是方便在異構(gòu)系統(tǒng)下編寫程序的,此異構(gòu)系統(tǒng)可通過CPU、GPU、DSP、FPGA或其他類型的處理器與硬件加速器所組成。(見圖1)

OpenCL平臺模型定義了使用OpenCL的一種高層模式,這個模型如圖1所示。這平臺包括一個宿主機(jī)(圖1中的Host),設(shè)備就是執(zhí)行指令流的地方。因此OpenCL的設(shè)備通常被稱為計算設(shè)備(圖1中的Compute Device),計算設(shè)備可以是GPU、FPGA等任何OpenCL架構(gòu)下支持的任意處理器。

OpenCL的運(yùn)行步驟比較復(fù)雜?;旧戏譃橐韵虏襟E:

(1)初始化階段,獲取設(shè)備信息,創(chuàng)建上下文(用于協(xié)調(diào)主機(jī)以及計算設(shè)備與主機(jī)的一種交互機(jī)制)。

(2)創(chuàng)建內(nèi)存對象,然后創(chuàng)建程序?qū)ο?,同時生成內(nèi)核對象。內(nèi)存對象存儲內(nèi)核執(zhí)行數(shù)據(jù),程序?qū)ο蠹闯绦蛟次募蛘叨M(jìn)制代碼數(shù)據(jù)。內(nèi)核對象是設(shè)備程序的入口。

(3)配置內(nèi)核參數(shù),并配置工作數(shù)組的組織形式。同時將內(nèi)核對象,以及工作數(shù)組參數(shù)放入命令隊列中送入?yún)f(xié)處理器中執(zhí)行。

(4)返回執(zhí)行結(jié)果,并釋放資源,程序結(jié)束。

1.2 CPU模塊基本介紹

由于本文編寫的是CPU模塊,在這里需要簡單講解一下CPU的工作原理。

CPU的主要運(yùn)作原理是執(zhí)行儲存在內(nèi)存中里的一系列指令。CPU工作架構(gòu)有馮·諾伊曼結(jié)構(gòu)(von Neumann architecture)以及哈佛結(jié)構(gòu)(Harvard architecture),由于MIPS架構(gòu)屬于馮·諾伊曼結(jié)構(gòu)(von Neumann architecture)架構(gòu),因此本文只討論馮·諾伊曼結(jié)構(gòu)的運(yùn)行方式。馮·諾伊曼CPU的運(yùn)作原理可分為五個階段:提取、解碼、執(zhí)行、訪存和寫回(見圖2)。

提取:CPU自動地從存儲器取出指令。為此,CPU能夠知道取出指令的存儲器地址,提取階段中的存儲器地址可以是生成,也可以是指令指定。

解碼:CPU對從存儲器取出的指令進(jìn)行分析。指令分析有2個部分:1.指令中的操作命令,即需要CPU進(jìn)行什么操作。2.指令中的操作數(shù)地址,即操作數(shù)的有效地址。

執(zhí)行:從解碼階段中獲取“操作命令”以及“操作數(shù)地址”后,形成控制型號,通過對CPU內(nèi)各個部件的控制,完成指令操作。

訪存:CPU會訪問內(nèi)存(或者高速緩存)訪問內(nèi)存讀或者寫數(shù)據(jù)。

寫回:CPU把完成執(zhí)行階段的結(jié)果寫入對應(yīng)的存儲器地址中。這一步是CPU執(zhí)行的最后一個階段。

2 CPU功能模塊設(shè)計

通過上文的講解,我們知道了OpenCL的結(jié)構(gòu)以及CPU模塊的運(yùn)作原理。OpenCL最簡單的工程通常有2類文件:.c以及.cl文件,.c文件運(yùn)行于主處理器上,.cl文件運(yùn)行于協(xié)處理器上。由于在本文的工程中,主CPU的功能就是用于輸送CPU模塊的二進(jìn)制命令,所以CPU模塊的編寫集中于.cl文件中。

2.1 CPU模塊整體概述

CPU模塊的對外接口需要盡量與實(shí)際CPU保持一致,這樣能夠方便設(shè)計人員能快速熟悉模塊使用。CPU模塊對外接口主要分兩塊:指令與數(shù)據(jù)。它們各自有相同功能的輸入輸出接口變量。而這些輸入輸出接口為以下這些:

clk:時鐘信號

rst:復(fù)位信號

int_i[6]:外部硬件中斷輸入

data_i[32]:輸入數(shù)據(jù)

ack_i:輸入響應(yīng)

addr_o[32]:輸出地址

data_o[32]:輸出數(shù)據(jù)

we_o:輸出使能信號

2.2 CPU模塊內(nèi)部功能實(shí)現(xiàn)

CPU模塊內(nèi)部依照CPU執(zhí)行步驟進(jìn)行區(qū)分,分為提取、解碼、執(zhí)行、訪存和寫回 這五個部分。

提取部分:主要功能是從對應(yīng)指令地址取出指令。代碼實(shí)現(xiàn)上,是通過把指令變量上獲取的指令代碼賦到內(nèi)部變量中。同時把指令地址變量指向下一個地址。

解碼部分:主要功能是解析指令,從指令中解析出操作類型,所需的源操作數(shù),要寫入的目的寄存器地址等。代碼實(shí)現(xiàn)上,根據(jù)MIPS32指令集對指令代碼進(jìn)行分割,并把數(shù)值賦給對應(yīng)內(nèi)容的代碼。

執(zhí)行部分:主要功能是執(zhí)行指令。代碼實(shí)現(xiàn)上,通過一個巨大的switch來應(yīng)對MIPS32的各自指令操作,;例如加減乘運(yùn)算(MIPS支持乘法)、移位操作或者邏輯操作。

訪存部分:主要功能是對一些需要執(zhí)行存儲器操作的。代碼實(shí)現(xiàn)上,是把指令執(zhí)行結(jié)果寫到對外接口的變量中。

寫回部分:主要功能是把相關(guān)指令操作的操作數(shù)寫入寄存器。代碼實(shí)現(xiàn)上,是把相關(guān)數(shù)值寫入代表寄存器的內(nèi)容。

3 仿真與功能實(shí)現(xiàn)

CPU模塊在設(shè)計之時就需要考慮到模塊驗(yàn)證。本文通過GNU環(huán)境下的MIPS交叉編譯環(huán)境編譯生成MIPS命令文件,本文生成的二進(jìn)制文件是一個冒泡算法。通過程序?qū)嶒?yàn)證明,CPU模塊能夠正常解析程序命令,能夠得出預(yù)期的實(shí)驗(yàn)結(jié)果。

4 結(jié)語

本文通過OpenCL架構(gòu)編寫在異構(gòu)架構(gòu)中能使用的CPU模塊。此CPU模塊支持完整的MIPS32指令集,并且在支持可重構(gòu)的異構(gòu)系統(tǒng)中,能夠依照需求讓協(xié)處理器能夠?qū)崿F(xiàn)CPU功能。在實(shí)際使用中拓寬了異構(gòu)系統(tǒng)的使用范圍,同時也豐富了設(shè)計人員在設(shè)計異構(gòu)系統(tǒng)的模塊庫。由于當(dāng)前很少有用于非數(shù)值運(yùn)算的異構(gòu)系統(tǒng)模塊,不僅僅上CPU模塊本身的功能拓展(比如把CPU模塊中添加內(nèi)存管理機(jī)制等),適合異構(gòu)系統(tǒng)的非數(shù)值運(yùn)算模塊編寫成了下一階段的工作重點(diǎn)與方向。

參考文獻(xiàn)

[1]薛勃,周玉潔.MIPS32 指令集兼容的CPU模擬器設(shè)計[J].計算機(jī)工程,2010,35(1):263-265.

[2]姚英彪,曾憲彬.嵌入式系統(tǒng)設(shè)計實(shí)驗(yàn)的QtMIPS仿真軟件開發(fā)[J].實(shí)驗(yàn)室研究與探索,2017,36(1):99-103.

[3]葉繼華,郭 帆,余 敏,馬麗紅,陶 玲.Intel X86 系列 CPU 模擬器的研究與實(shí)現(xiàn) [J].江西師范大學(xué)學(xué)報(自然科學(xué)版). 2007. 31(6): 643-644.

[4]Dominic Sweetman. See MIPS Run[M]. San Francisco, California: Morgan Kaufmann,2006.

[5]范興山,彭 軍,黃樂天.基于OpenCL的FPGA 設(shè)計優(yōu)化方法研究[J].電子技術(shù)應(yīng)用,2014,40(1):16-19.

[6]Aaftab Munshi, Benedict R. Gaster, Timothy G. Mattson, James Fung, Dan Ginsburg. OpenCL Programming Guide [M]. Boston , Massachusetts. : Addison-Wesley, 2006.

主站蜘蛛池模板: 一级毛片基地| 欧美日本中文| 免费一看一级毛片| 久久久久国产一级毛片高清板| 夜夜操国产| 国产www网站| 久久久久亚洲av成人网人人软件| 亚洲第一黄片大全| 中文国产成人久久精品小说| 免费在线视频a| 一区二区理伦视频| 成人国产精品网站在线看| av免费在线观看美女叉开腿| 日本人真淫视频一区二区三区| 国产精品妖精视频| 99re精彩视频| 亚洲国产精品美女| 日韩美毛片| 国产亚洲精品在天天在线麻豆| 99草精品视频| 免费激情网址| 免费看a毛片| 99久久人妻精品免费二区| 国产精品太粉嫩高中在线观看| 国产香蕉在线视频| 久久人人妻人人爽人人卡片av| 久久精品免费国产大片| 欧美一道本| 美女视频黄又黄又免费高清| 国产一区二区三区在线观看免费| 97视频免费看| 欧美午夜精品| 九色在线视频导航91| 国产成人a毛片在线| 国产精品一区二区不卡的视频 | 新SSS无码手机在线观看| 午夜视频免费一区二区在线看| 男人天堂伊人网| 欧美成人区| 久久99国产综合精品1| 久久精品午夜视频| 国产主播福利在线观看| 国产人前露出系列视频| 亚洲国产成人久久77| 亚洲第一页在线观看| 8090成人午夜精品| 亚洲色无码专线精品观看| 亚洲天天更新| 国产成人亚洲日韩欧美电影| 亚洲色成人www在线观看| 欧美激情伊人| 色国产视频| 国产精品久线在线观看| 亚洲永久免费网站| 五月婷婷伊人网| 无码精品国产VA在线观看DVD| 国外欧美一区另类中文字幕| 欧美久久网| 成年av福利永久免费观看| 亚洲男女在线| 国产一级精品毛片基地| 九九视频免费在线观看| 亚洲无码高清视频在线观看| 久久亚洲国产最新网站| a毛片免费观看| 国产在线精品香蕉麻豆| 亚洲人成网18禁| 最近最新中文字幕免费的一页| 亚洲国产日韩欧美在线| 日本影院一区| 日本欧美视频在线观看| 国产成人精品午夜视频'| 欧美色99| 国产精品久久自在自线观看| 日韩无码黄色网站| 国产乱子伦手机在线| 久久久久久久久亚洲精品| 亚洲国产理论片在线播放| 国产精品视频猛进猛出| 亚洲欧美不卡| 婷婷五月在线视频| 日本午夜视频在线观看|