亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        曾亞 周琦 章杰

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

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

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

        OpenCL全稱Open Computing Language,是指開放計(jì)算語(yǔ)言,用于編寫在異構(gòu)平臺(tái)上執(zhí)行的程序。作為現(xiàn)在流行的異構(gòu)系統(tǒng)編程框架,可以讓異構(gòu)系統(tǒng)的應(yīng)用可以不局限于數(shù)值計(jì)算中,也可用于非數(shù)值運(yùn)算中。系統(tǒng)中協(xié)處理器不僅可以通過(guò)使用高級(jí)語(yǔ)言進(jìn)行編程,而且OpenCL把協(xié)處理器與主處理器(大部分情況下由CPU擔(dān)任)統(tǒng)一在一個(gè)框架下編程,這使得兩者的數(shù)據(jù)交換變得非常簡(jiǎn)便與靈活。在某些狀況下,協(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)的使用范圍可以大大增加。

        本文通過(guò)OpenCL架構(gòu),設(shè)計(jì)一個(gè)在“CPU+GPU”的異構(gòu)系統(tǒng)中能夠運(yùn)行的CPU模塊。此模塊兼容開源的MIPS32指令集,易于理解與掌握,方便設(shè)計(jì)人員應(yīng)用。選擇MIPS架構(gòu)的理由是,MIPS架構(gòu)源代碼公開,相關(guān)資料豐富,易于理解與掌握?,F(xiàn)在不少大學(xué)本科計(jì)算機(jī)專業(yè)課中,通過(guò)MIPS架構(gòu)來(lái)講解計(jì)算機(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,中文名為開放計(jì)算語(yǔ)言)是一個(gè)在異構(gòu)系統(tǒng)中設(shè)計(jì)應(yīng)用的框架,目的是方便在異構(gòu)系統(tǒng)下編寫程序的,此異構(gòu)系統(tǒng)可通過(guò)CPU、GPU、DSP、FPGA或其他類型的處理器與硬件加速器所組成。(見圖1)

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

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

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

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

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

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

        1.2 CPU模塊基本介紹

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

        CPU的主要運(yùn)作原理是執(zhí)行儲(chǔ)存在內(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)作原理可分為五個(gè)階段:提取、解碼、執(zhí)行、訪存和寫回(見圖2)。

        提?。篊PU自動(dòng)地從存儲(chǔ)器取出指令。為此,CPU能夠知道取出指令的存儲(chǔ)器地址,提取階段中的存儲(chǔ)器地址可以是生成,也可以是指令指定。

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

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

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

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

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

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

        2.1 CPU模塊整體概述

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

        clk:時(shí)鐘信號(hào)

        rst:復(fù)位信號(hào)

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

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

        ack_i:輸入響應(yīng)

        addr_o[32]:輸出地址

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

        we_o:輸出使能信號(hào)

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

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

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

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

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

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

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

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

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

        4 結(jié)語(yǔ)

        本文通過(guò)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è)計(jì)人員在設(shè)計(jì)異構(gòu)系統(tǒng)的模塊庫(kù)。由于當(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].計(jì)算機(jī)工程,2010,35(1):263-265.

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

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

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

        [5]范興山,彭 軍,黃樂天.基于OpenCL的FPGA 設(shè)計(jì)優(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.

        国产av无码专区亚洲aⅴ| 大香蕉视频在线青青草| 久久精品亚洲熟女九色| 国产二区中文字幕在线观看| 内射白浆一区二区在线观看| 久久午夜夜伦鲁鲁片免费无码| 国产精品麻豆成人AV电影艾秋| 老熟女熟妇嗷嗷叫91| 亚洲欧洲日产国码无码av野外| 自拍偷拍韩国三级视频| 中文字幕女优av在线| 亚洲精品无码久久久影院相关影片| 三级特黄60分钟在线观看| 亚洲熟妇网| 日韩亚洲在线一区二区| 亚洲色一区二区三区四区| 欧美猛男军警gay自慰| 国精品无码一区二区三区在线看| 亚洲国产综合精品中文| 老太婆性杂交视频| 色偷偷偷久久伊人大杳蕉| 亚洲黄视频| 爆乳无码AV国内| 日本一区二区三区不卡在线| 狠狠综合亚洲综合亚洲色| 国产午夜福利在线播放| 中文字幕天堂网| 亚洲在线视频一区二区 | 国产福利小视频91| 男性av天堂一区二区| 亚洲精品成人无码中文毛片| 日韩h网站| 日本小视频一区二区三区| 亚洲va久久久噜噜噜久久天堂 | 男ji大巴进入女人的视频小说| 97超在线视频免费| 国产av自拍在线观看| 风韵少妇性饥渴推油按摩视频| 国产成人av一区二区三区在线 | 伊甸园亚洲av久久精品| 国产成人无码a区在线观看视频 |