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

龍騰Stream流處理器驗證

2013-07-19 08:14:42白龍飛樊曉椏孫立超
計算機工程與應用 2013年15期
關鍵詞:指令功能

白龍飛,樊曉椏,張 萌,孫立超

西北工業大學 計算機學院,西安 710129

龍騰Stream流處理器驗證

白龍飛,樊曉椏,張 萌,孫立超

西北工業大學 計算機學院,西安 710129

1 引言

VLSI技術的巨大進步使得在單個芯片上集成超過數百萬個晶體管以搭建大規模的SoC(System on Chip,片上系統)成為可能,驗證工作已成為芯片設計流程中最為關鍵的瓶頸,大約有70%~80%的設計時間都花費在了功能驗證中[1]。巨大的驗證工作量使得現在很多的新工具和方法學都把驗證作為研究目標,并通過并行化、更高層次的抽象和自動化來縮短驗證需要的時間[2]。通過驗證語言、硬件描述語言或C等高級語言搭建驗證平臺是功能驗證中最為重要的驗證手段。驗證平臺需要提供各種自動化機制以提高測試案例的功能覆蓋率和減少創建測試案例的時間,從而保證驗證過程更快地達到收斂。System Verilog[3]是業界新興的一種硬件描述和驗證語言(HDVL),支持受約束隨機激勵的產生和覆蓋率統計分析,其面向對象的編程結構有助于采用事務級的驗證和提供驗證的可重用性[4]。System Verilog面向對象的編程模型這一特性能夠極大地增強驗證平臺組件的重用能力,利用驗證組件組合成的強大驗證環境能夠滿足被驗證設計(DUV)的各種必要的測試案例。

SoC設計通常集成了CPU、存儲器及其他功能模塊,并在硬件上運行相應的嵌入式軟件,因此SoC設計的驗證工作除了驗證硬件設計的實現功能,還需要驗證軟件與硬件協同工作的兼容性和性能[5-6]。傳統的基于RΤL(Register Τransfer Level,寄存器傳輸級)的軟件驗證平臺由于仿真速度的限制[7],存在著時間開銷大、仿真效率低的問題。此外,由于RΤL級仿真忽略了大量的電路實際延遲,其性能分析的評估數據過于樂觀。而基于FPGA原型的軟硬件協同驗證可以快速完成驗證并保持周期精確,同時降低了開發風險,避免了由于仿真模型的缺陷而引起大量的芯片故障,極大地提高了SoC設計的驗證效率[7-8]。

西北工業大學航空微電子中心對面向流計算的主動適應體系結構進行深入研究,成功設計出了龍騰Stream流處理器。本文通過開發基于System Verilog的覆蓋率驅動的自動化驗證平臺,對流處理器的指令集進行了全面的功能驗證,并搭建FPGA原型系統對流處理器的實現功能和性能進行了深入評測。根據在原型系統上的性能評測結果,分析了影響流處理器性能的關鍵因素,并提出了優化流處理器加速性能的方法。

圖1 龍騰Stream流處理器計算平臺

2 龍騰Stream流處理器

龍騰Stream流處理器[9]是針對具有大量數據并行性、計算密集型的應用而設計的面向于短向量的適應性流體系結構,以多套單指令多數據模式的短向量簇實現程序的并行加速。

流處理器以層次化的片上流存儲體系捕獲數據局部性的,其存儲結構分為三級:片外存儲器、片上局部存儲器和寄存器文件。主控核組織數據流并通過總線傳到片上局部存儲器中,向量指令集中的Load/Store指令將片上局部存儲器中的數據搬移到寄存器組中,計算部件直接從寄存器組中取數據。

流處理器計算平臺包含短向量計算簇、標量單元以及局部存儲模塊,如圖1所示。

2.1 短向量計算簇

短向量計算簇(Short Vector Cluster,SVC)是實現計算平臺的主要計算部件,主要包括向量Load/Store單元(VLSU),向量簡單定點計算單元(VSIU),向量復雜定點計算單元(VCIU),向量置換單元(VPU),向量浮點計算單元(VFPU),向量寄存器文件(VRF)。計算平臺集成4套短向量計算簇,每套短向量計算簇擁有各自獨立對應的向量寄存器文件,以SIMD方式執行操作。

2.2 標量單元

標量單元(Scalar Unit)包含32個標量寄存器,1個條件寄存器和ALU單元。其主要功能是少量的標量運算以及獨立的標量訪存,輔助短向量計算簇實現循環操作,同時為計算簇的訪存單元計算有效地址提供支持。

2.3 局部存儲模塊

局部存儲模塊(Local Memory)為計算平臺提供指令和數據的存儲空間,共有四種不同的存儲模塊,分別為指令存儲模塊(Instruction Memory)、標量數據存儲模塊(Scalar Data Memory)、配置存儲模塊(Configuration Memory)和向量數據存儲模塊(Stream Memory)。指令存儲模塊存儲主控核傳遞過來的指令;標量數據存儲模塊存儲標量數據并供標量單元使用;配置存儲模塊存儲用戶寫入的控制數據,主要功能是寫入程序的起始地址和結束地址,控制計算單元的執行與結束;向量數據存儲模塊主要存儲提供給SVC計算部件的向量數據。

3 流處理器的指令集驗證

龍騰Stream流處理器的指令集采用RISC設計原則,指令長度為32位,指令格式規整,實現了152條向量指令和10條標量指令。向量指令完成簡單和復雜的定點運算、浮點乘加和其他一些向量數據處理功能。標量指令主要用于循環控制、標量訪存以及向量LSU指令中的標量操作。流處理器的指令格式如圖2和圖3所示。

圖2 向量指令格式

圖3 標量指令格式

圖4 流處理器驗證平臺結構

本驗證采用基于System Verilog的高級驗證方法學[10]搭建覆蓋率驅動的自動化驗證平臺,完成流處理器指令集的功能驗證。流處理器驗證平臺的結構設計如圖4所示。驗證平臺為分層次結構,每個層次給其上層或測試案例提供服務,并通過抽象隱藏低層次細節[10-12]。

驗證平臺主要包括指令序列生成器、驅動器、監測器、參考模型、自檢器以及功能覆蓋率分析等組件。發生器使用藍圖模式[11]產生一條受約束的隨機指令,將其發送給參考模型得到期望響應并回調給自檢器,同時通過Mailbox發送到驅動器。驅動器將指令激勵發送給DUV,監測器檢測到流處理器運行結束后將接收到的實際響應回調給自檢器,并通知發生器生成下一條指令激勵。自檢器對期望響應和實際響應進行比較后輸出測試報告。

3.1 發生器

該驗證平臺要完成流處理器實現的152條向量指令和10條標量指令的驗證。考慮到指令集中指令的操作碼并不完備,且指令格式也不一致,完全隨機的生成方式需要排除掉大量非法指令,受約束的隨機生成方式則要求編寫大量的約束條件。因此考慮將操作碼和操作數分開隨機生成,再根據指令類型封裝成完整的指令激勵。本文將待測指令的操作碼存入指令數組,通過約束邊界隨機生成數組索引得到指令操作碼。指令中的操作數及對應寄存器內容的邊界較為規整,因此采用受約束的隨機方式生成。

所有約束使用帶有范圍變量的inside運算符和權重變量的dist操作符來參數化約束條件,不需要手動修改約束驗證平臺便可改變指令發生器的激勵產生行為。指令類中inside和dist約束的操作碼索引的生成按若干段均勻分布,操作數對應寄存器內容的生成分布按待驗證的指令功能點劃分,比如加減法指令溢出、浮點指令非法操作等異常情況。

3.2 驅動器

流處理器的指令集按操作數數目可分為四類,如表1所示。驅動器根據指令類別分情況配置流處理器的四個存儲模塊,實現指令激勵的驅動。

表1 流處理器指令分類表

向量指令驅動的處理步驟為:(1)通過對標量數據存儲模塊進行寫操作,設定待測指令四個操作數的存放地址;(2)將源操作數寫入向量數據存儲模塊;(3)組織指令,在待測指令前安排Load指令將源操作數裝入向量寄存器,其后安排Store指令將向量寄存器中的執行結果存儲到向量數據模塊;(4)將組織好的指令序列寫入指令存儲模塊;(5)寫配置存儲模塊設定流處理器執行的指令序列的起始與結束地址;(6)寫配置存儲模塊啟動流處理器進入工作狀態。

驅動Load/Store指令時需額外考慮目的操作數/源操作數的存放地址,以避免和源操作數/目的操作數的地址發生沖突。

3.3 監測器

由于不同類型指令的執行結果存放位置不同,因此監測器需要根據指令類型設定讀取地址。

監測器首先從與發生器相連的Mailbox中讀取指令激勵,根據指令索引判斷指令類型并設定讀取指令執行結果的地址。通過監視配置存儲模塊的處理器狀態寄存器,在流處理器執行結束后讀取指令執行結果并回調給自檢器,同時通知發生器該指令執行完畢。

3.4 自檢查結構

本驗證平臺的自檢查結構采用基于參考模型的黑盒驗證手段。如圖5所示,激勵同時施加給DUV和參考模型,參考模型動態預測期望響應,比較函數將期望響應與實際響應進行比較。

圖5 驗證平臺的自檢查結構

本驗證平臺的參考模型用C語言實現,通過直接編程接口(DPI)[3]將其集成到System Verilog驗證環境中。參考模型根據指令激勵的索引調用相應的執行函數得到期望響應。參考模型的期望響應輸出與DUV的實際響應輸出之間的延遲不一,需要自檢器對其周期匹配后再進行比較。本文先將參考模型輸出的期望響應保存,在監視器得到實際響應后調用比較函數進行比較,并輸出測試報告。

3.5 功能覆蓋率

由于本驗證平臺是對流處理器的指令集進行功能驗證,因此功能覆蓋率的分析主要關注指令類型及其功能點的覆蓋,即指令集中的所有指令及其異常情況是否全部生成并驗證。

覆蓋組使用cross結構記錄操作碼索引和操作數對應寄存器內容覆蓋點的組合值。驗證環境的總體覆蓋率計算由所有簡單覆蓋點和交叉覆蓋點的命中情況決定,而本驗證平臺的覆蓋率目標僅由交叉覆蓋率反映,因此將各個覆蓋點的覆蓋率權重置為零,以防止總體覆蓋率被錯誤地提高。操作碼索引覆蓋點的每個值對應一個倉,寄存器內容覆蓋點則按待驗證指令的功能點創建倉,并使用ignore_bins結構清除掉不需要關注的操作碼索引和寄存器內容組合對應的交叉倉。

覆蓋率分析器通過對參考模型輸出和監測器接收到的響應數據進行采樣,實時統計覆蓋組的功能覆蓋率及各功能點的命中情況,并根據分析結果動態調整指令生成器中約束條件的范圍和權重。通過從功能覆蓋率到生成器的反饋使驗證過程自動集中在覆蓋率空間中未被覆蓋的區域,最終達到指令類型及其功能點全覆蓋的目標。

通過分析覆蓋率報告修改隨機約束或人工編寫定向測試激勵可以提高驗證的覆蓋率,但需要測試人員的實時干預。改變隨機種子并添加到回歸測試包的方法在不同版本仿真器和約束解釋器中重用驗證平臺時會出現問題,使用相同的種子可能生成不同的激勵,覆蓋率漏洞會因為激勵的不同而不同。本文實現的覆蓋率自動反饋機制不僅減少了人工的干預和工作量,而且使得驗證平臺在移植到不同仿真軟件上時具有良好的通用性。

實驗分別使用VCS和Questasim仿真軟件運行驗證平臺,均獲得了100%的功能覆蓋率,表明驗證平臺具有良好的可移植性。驗證平臺共檢測出23個bug(浮點指令:14個,置換指令:8個,簡單定點指令:1個)。同原有的功能仿真驗證平臺相比,本驗證平臺大大提高了驗證效率和覆蓋率,如表2所示。

表2 覆蓋率驅動的驗證平臺同原有功能驗證平臺比較

4 流處理器的性能驗證

龍騰Stream流處理器的FPGA原型驗證系統[13]的結構如圖6所示。流處理器通過Avalon Slave總線連接到基于Nios II處理器的硬件系統中,其運行受到主處理器的控制。標量主處理器Nios II承擔流處理過程中的控制和數據的組織傳遞,包括啟動計算平臺,控制傳入到計算平臺的輸入數據,對計算平臺的運行結束信號進行檢測,執行流級程序。流處理器原型作為協處理器實現流應用的運算加速。

圖6 流處理器FPGA驗證平臺

FPGA原型驗證系統通過運行測試程序集完成流處理器實現功能及性能的評測工作。測試程序集選用典型的流應用實例,包含了傳統的圖像處理應用、常用的數字信號處理應用以及通用計算與科學計算。根據流處理器原型系統設計測試程序的軟件架構,對應用實現并行化流編程。在測試程序中加入串行的參考程序,以驗證FPGA原型系統的正確性。原型系統的性能評測環境如表3所示。

表3 性能評測環境

性能評測以通用計算架構作為對比,分別對流應用程序進行測試,精確統計程序執行的周期數。通過比對運行結果,并行程序和參考的串行程序完全一致,從而驗證了流處理器實現功能和FPGA原型系統的正確性和可靠性。圖7列出了流處理器原型系統相對于MPC8270的加速比,大部分流應用均在流處理器原型系統上取得了可觀的加速效果,平均加速比可達15.9。

圖7 流處理器原型系統相對于MPC8270的加速比

造成各流應用加速效果差異的主要原因是核級程序的并行處理寬度不同,向量點積、FIR、Laplace變換、均勻量化、DCΤ和FFΤ的并行寬度均為16,矩陣乘法的并行寬度為32,而中值濾波的并行寬度為64,所以中值濾波和矩陣乘法均取得了不錯的加速效果。

流應用的核級執行時間所占比例也是影響加速效果的一個重要因素。測試程序的核級執行時間所占比例如圖8所示。核級執行時間比例較大的應用容易獲得較好的加速效果,比如DCΤ、矩陣乘法和中值濾波。

圖8 測試程序的核級程序執行時間所占比例

實驗結果發現,FFΤ算法的加速性能并不理想。該算法每一級的蝶形運算在核級程序中通過短向量簇并行加速完成,但由于流體系只適合處理規則的流數據,每一級運算的數據置換操作則需要標量主處理器來承擔。盡管核級程序具有極大的并行數據寬度,但流存儲器對總線的帶寬僅有32位,這使得大量的程序執行時間耗費在了數據來回遷移的過程中,大幅降低了核級程序執行時間所占的比例,從而制約了加速性能的發揮。

主協處理器異構核間相差巨大的數據帶寬已成為制約流處理器系統性能的瓶頸,開發具有更高帶寬的片上數據總線或數據傳輸方式是提升流處理器計算性能的關鍵。因此,對流處理器結構的優化可以從兩個方面考慮,一是通過支持組間交叉存儲和數據流索引訪問,為隨機訪存提供強大的數據帶寬;二是在片上局部存儲器和片外存儲器中間加入DMA模塊,提高數據在主控處理器和流處理器之間傳輸的速度。

5 結束語

本文通過開發基于System Verilog的覆蓋率驅動的自動化驗證平臺,對龍騰Stream流處理器的指令集進行了功能驗證,提高了驗證的效率和覆蓋率,驗證平臺具有良好的重用性和可移植性。搭建FPGA原型系統對流處理器的實現功能和系統性能進行了評測,并根據實驗結果分析了影響流處理器性能的關鍵因素,并提出了優化流處理器結構的方法。未來將在可靠數據帶寬、多粒度并行和編程模型等方面作深入研究,進一步改進流處理器原型系統。

[1]Mulani P D.SoC level verification using System Verilog[C]// Second International Conference on Emerging Τrends in Engineering and Τechnology,Nagpur,2009.

[2]Bergeron J.Writing testbenches:functional verification of HDL models[M].2nd ed.New York:Springer,2003:3-4.

[3]SystemVerilog Standards Committee.SystemVerilog 3.1a language reference manual[R/OL].(2004-03-04).http://www. eda-stds.org/sv.

[4]鐘文楓.System Verilog與功能驗證[M].北京:機械工業出版社,2010:22-23.

[5]Huang Xu,Liu Lintao,Li Yujing,et al.FPGA verification methodology for SiSoC based SoC design[C]//International Conference on Electron Devices and Solid-State Circuits,Τianjin,2011.

[6]Chen Wenwei,Zhang Jinyi,Li Jiao,et al.Study on a mixed verification strategy forIP-based SoC design[C]//Seventh IEEE CPMΤ Conference on High Density Microsystem Design and Packaging and Component Failure Analysis,Shanghai,2005.

[7]Nakamura Y,Hosokawa K,Kuroda L,et al.A fast hardware/ software co-verification method for system-on-a-chip by using a C/C++simulator and FPGA emulator with shared register communication[C]//41st Design Automation Conference,San Diego,2004.

[8]Lin Yifan,Zeng Xiaoyang,Wu Min,et al.New methods of FPGA co-verification for System on Chip(SoC)[C]//Sixth International Conference on ASIC,Shanghai,2005.

[9]開耀文.多核流處理器原型系統設計[D].西安:西北工業大學,2012.

[10]Bergeron J,Cerny E,Hunter A,et al.Verification methodology manual for SystemVerilog[M].New York:Springer,2005:1-280.

[11]Spear C,Τumbush G.SystemVerilog for verification:a guide to learning the testbench language features[M].3rd ed.New York:Springer,2012:1-22,280-284,323-360.

[12]Bergeron J.Writing testbenches using SystemVerilog[M].New York:Springer,2006:279-331.

[13]張宇軒.流處理器演示系統設計與實現[D].西安:西北工業大學,2012.

[14]S2C dual stratix-4 ΤAI LM hardware reference manual[R]. California:S2C Inc.,2010.

[15]MPC8280 PowerQUICCII family reference manual[R].Τexas:Freescale Semiconductor,Inc.,2005.

BAI Longfei,FAN Xiaoya,ZHANG Meng,SUN Lichao

School of Computer Science,Northwestern Polytechnical University,Xi’an 710129,China

Τhe improvement of chip design complexity urgently needs advanced methodology to cope with the huge workload of verification.Τhis paper presents a method for functional verification of the“Longtium Stream”processor instruction set by constructing an automatic coverage-driven verification platform.Τhe experimental results show that the method improves the efficiency and functional coverage of verification and enhances the reusability and portability of the verification platform.Τhis paper builds a FPGA prototype system to evaluate the functionality and performance of the Stream processor,and proposes optimization methods for accelerating its performance.

Stream processor;instruction set verification;System Verilog;Field Programmable Gate Array(FPGA)prototype verification

芯片設計復雜度的提高迫切地需要先進的方法學以應對巨大的驗證工作量。通過開發基于System Verilog的覆蓋率驅動的自動化驗證平臺,對龍騰Stream流處理器的指令集進行了功能驗證。實驗結果表明,該驗證平臺提高了驗證效率和功能覆蓋率,具有良好的重用性和可移植性。搭建FPGA原型驗證系統對流處理器的功能和系統性能進行了評測,并提出了優化流處理器加速性能的方法。

流處理器;指令集驗證;System Verilog;現場可編程門陣列(FPGA)原型驗證

A

ΤP303

10.3778/j.issn.1002-8331.1304-0160

BAI Longfei,FAN Xiaoya,ZHANG Meng,et al.Verification of“Longtium Stream”processor.Computer Engineering and Applications,2013,49(15):65-69.

國家高技術研究發展計劃(863)(No.2009AA01Z110);教育部博士點基金(No.20116102120049)。

白龍飛(1988—),男,碩士研究生,主要研究領域為計算機系統結構;樊曉椏(1962—),男,博士,教授,主要研究領域為計算機系統結構;張萌(1978—),男,博士,講師,主要研究領域為計算機系統結構;孫立超(1989—),男,碩士研究生,主要研究領域為計算機系統結構。E-mail:bailongfei@mail.nwpu.edu.cn

2013-04-11

2013-05-27

1002-8331(2013)15-0065-05

◎網絡、通信、安全◎

猜你喜歡
指令功能
聽我指令:大催眠術
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
殺毒軟件中指令虛擬機的脆弱性分析
電信科學(2016年10期)2016-11-23 05:11:56
一種基于滑窗的余度指令判別算法
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 中文字幕无码av专区久久| 91成人在线免费视频| 国产麻豆aⅴ精品无码| 亚洲精品国产精品乱码不卞| 97视频精品全国免费观看 | 国产成人精品免费视频大全五级| 欧美亚洲国产精品第一页| 在线观看无码a∨| 久久伊人久久亚洲综合| 成年女人a毛片免费视频| 国产在线观看成人91| 成年人福利视频| 亚洲三级视频在线观看| 日韩视频免费| 国产三级视频网站| 亚洲第一视频网站| 久久网欧美| 成人国产免费| 蜜芽一区二区国产精品| 国产精品密蕾丝视频| 片在线无码观看| 国产成人免费视频精品一区二区| 色婷婷亚洲综合五月| 国产精品真实对白精彩久久| 亚洲一级毛片在线观播放| 国产最新无码专区在线| 在线中文字幕网| 日a本亚洲中文在线观看| 欧美中文字幕在线视频| 五月婷婷综合网| 67194成是人免费无码| 亚洲AV无码一区二区三区牲色| 日韩色图在线观看| 亚洲色大成网站www国产| 天堂亚洲网| 色婷婷色丁香| 美女免费黄网站| 日韩精品亚洲精品第一页| 青青草原国产免费av观看| 国模私拍一区二区| 欧美亚洲国产精品久久蜜芽| 2020最新国产精品视频| 男女性午夜福利网站| 综合亚洲色图| 日韩精品一区二区三区swag| 欧美日韩在线亚洲国产人| 亚洲清纯自偷自拍另类专区| 91成人在线观看| 国产免费精彩视频| 精品久久香蕉国产线看观看gif| 国产一级在线观看www色| 亚洲综合在线最大成人| 美臀人妻中出中文字幕在线| 国产二级毛片| 久久综合亚洲色一区二区三区| 综合社区亚洲熟妇p| 青草视频在线观看国产| 国产精品久久久久久久久kt| 国产v欧美v日韩v综合精品| 亚洲一区色| 国产区精品高清在线观看| 欧美三级不卡在线观看视频| 久久一本精品久久久ー99| 国产精品亚洲五月天高清| 日韩一区二区三免费高清| 中文字幕人成人乱码亚洲电影| 黄色网页在线播放| a在线观看免费| 色婷婷丁香| 98精品全国免费观看视频| 国产手机在线ΑⅤ片无码观看| 欧美日本在线一区二区三区| 日本精品一在线观看视频| 亚洲三级影院| 亚洲中文字幕在线观看| 少妇极品熟妇人妻专区视频| 久久精品女人天堂aaa| 99精品久久精品| 无码精油按摩潮喷在线播放| 亚洲日韩精品伊甸| 天堂在线www网亚洲| 亚洲中文字幕国产av|