CN101620643B - 一种基于fpga的体系结构仿真系统设计方法 - Google Patents
一种基于fpga的体系结构仿真系统设计方法 Download PDFInfo
- Publication number
- CN101620643B CN101620643B CN200910043827XA CN200910043827A CN101620643B CN 101620643 B CN101620643 B CN 101620643B CN 200910043827X A CN200910043827X A CN 200910043827XA CN 200910043827 A CN200910043827 A CN 200910043827A CN 101620643 B CN101620643 B CN 101620643B
- Authority
- CN
- China
- Prior art keywords
- data
- clock
- output
- write address
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于FPGA的体系结构仿真系统设计方法,要解决的技术问题是提供一种增大FPGA仿真规模的方法。技术方案是首先在时钟锁相环中产生指令时钟和数据时钟,然后设计指令存储器、数据存储器、计算簇仿真单元、控制器中的地址产生模块,接着连接时钟锁相环、计算簇仿真单元、控制器、指令存储器和数据存储器,构成仿真系统,最后将仿真系统烧制到FPGA芯片中。采用本发明能对SIMD结构的处理器进行类时钟精确仿真,当处理器中计算簇数目扩展时,能在不增加过多硬件开销的情况下实现仿真系统扩展,且扩展方便,有效降低了FPGA仿真成本。
Description
技术领域
本发明涉及一种体系结构仿真系统设计方法,尤其是基于现场可编程门阵列(FPGA:Field Programmable Gate Array)的体系结构仿真系统设计方法。
背景技术
随着媒体处理、科学计算等大量计算密集型应用的不断涌现,应用对处理器计算能力的需求也不断增大。与传统的桌面应用相比,这类应用对每次从内存取出的数据都要进行大量的算术运算,因此称为计算密集型应用。大多数计算密集型应用中的运算是可以并行的,且以数据级并行为主,同时存在指令级和任务级并行。这种并行特征使得SIMD(单指令流多数据流:Single Instruction streamMultiple Data stream)结构成为适用于这类应用的主要并行体系结构之一。SIMD体系结构通常是由多个对称的计算簇构成,所有计算簇通过执行相同的指令而对不同的数据进行处理来开发应用中的数据级并行,并可以通过扩展计算簇的数量来使得体系结构的硬件规模与不同应用中的数据并行规模相匹配。
在当前定制集成电路的设计中,产品中的硬件错误往往具有不可修改性,所以设计师们要面临极大的风险和挑战。在芯片设计中,需要花费极大的人力和物力用于测试和验证,而其中还有很大一部分测试工作必须等到芯片样片出产后才能进行,这严重的影响了芯片的开发周期和设计成本。自20世纪70年代数字集成电路可编程阵列逻辑(PAL:Programmable Arry Logic)出现之后,快速可重构的硬件系统设计技术逐渐涌现。复杂可编程逻辑器件(CPLD:ComplexProgrammable Logic Device)和现场可编程门阵列FPGA的出现为芯片设计的测试和验证提供了一个很好的解决方案。特别是FPGA,它具有建造运行得和成品几乎一样快的工作原型硬件的能力,同时又具备可编程和快速可重构的灵活性,从而采用FPGA进行芯片测试和验证能极大降低芯片研发的固有风险,缩短产品的开发周期。这种通过将处理器映射在FPGA上进行测试和验证的过程称为仿真,被测试的处理器成为目标系统,由FPGA构成的测试平台则称为仿真系统。用于构建仿真系统的工具集合称为FPGA开发环境,如Altera公司的Quartus, 它包括FPGA综合工具(将系统的寄存器传输级(RTL:Register Transform Level)描述转换成为逻辑网表)、FPGA仿真工具(将逻辑网标烧制到FPGA系统)以及FPGA测试工具(用于统计和输出仿真系统的一些信息)。FPGA仿真规模是指能烧制到FPGA芯片上进行测试和验证的目标系统的规模。
在利用FPGA仿真时,仿真规模严重受限于FPGA芯片的容量,在面向SIMD这类具有高扩展性的体系结构仿真时,这个问题更为明显。若采用更大容量的FPGA或利用多片FPGA进行仿真,将面临FPGA开发板重设计和多片FPGA互连通讯等问题。随着研究的深入,系统会越来越复杂,这会造成研究成本和设计复杂度越来越高。因此,如何最大化片上资源的利用率,增大FPGA的仿真规模成为了处理器设计和体系结构研究中的一个重要问题。
在当前的研究中,增大FPGA的仿真规模主要有软硬件联合模拟仿真和硬件分时复用仿真两种方法。软硬件联合模拟仿真是利用FPGA对处理器中经常使用的部分进行仿真,提高这部分的仿真精度和系统的仿真速度,而将处理器中不经常使用的部分在宿主机上用软件模拟器进行仿真,保证仿真系统行为的完整性。这种软硬联合的方式能增大FPGA的仿真能力,但其仿真速度在很大程度上取决于处理器仿真时在软硬件系统上的划分,仿真精度则在很大程度上取决于软件模拟器中模型的精度和软硬件接口部分的处理精度。硬件分时复用仿真方法是将多个目标处理器映射到少量的模拟引擎上执行,该方法的主要思想是多个目标处理器的行为在一个共享的模拟引擎上执行,即一个模拟引擎在某段时间内仿真一个目标处理器的行为,而在另一个时间段内仿真另一个目标处理器的行为。该方法一般用于多处理器系统的功能仿真,不能做到时钟精确仿真,使得设计师难以精确的分析芯片内部行为。Carnegie Mellon大学Eric S.Chung博士的最新研究表明,硬件分时复用仿真方法与基于采样模拟的方法结合,可以实现系统的时钟精确仿真,但尚未公布其设计方法。硬件分时复用仿真方法通过使用一个模拟引擎对多个目标处理器进行仿真,可以使得FPGA的仿真规模增加10~100倍。
国防科技大学何义等人在国际会议ACSAC2008(第13届亚太体系结构年会:13th IEEE Asia-Pacific Computer Systems Architecture Conference)上提出了一种源于硬件分时复用仿真技术思想的等价仿真方法FEST(FPGA-basedEquivalent Simulation Technology),主要用于对SIMD结构的处理器进行仿真。 这种方法的主要步骤是:
1.在仿真系统中构建一个等价仿真单元,该单元在功能上与目标系统中一个计算簇的功能等价。
2.在仿真系统控制器中设计计数器,该计数器随时钟跳变进行计数,每记满N清零。因此,其输出为0~(N-1)的整数,其中N为目标系统中计算簇的数目。
3.设一个单位时间即计数器记满一次的时间为T=N*t,其中t是仿真系统的一个时钟周期。在当前的T时间内,根据计数器的值,等价仿真单元在N个时钟周期t中分别对SIMD结构的处理器中的1~N号计算簇的行为进行仿真,并将该时钟周期内的仿真中间结果保存在一个特殊的存储器中,该存储器称为状态保存空间SPS(State Preserving Space),每个计算簇对应一个SPS。
4.在下一个T中,等价仿真单元在N个t中分别从SPS中读取上一个T中对应的计算簇的仿真结果,并进行后续的仿真。
FEST方法通过对等价仿真单元分时复用的方式对处理器中多个计算簇的行为进行仿真,分时复用的时间片细分至单个时钟周期,可以实现对SIMD结构的类时钟精确仿真,即仿真结果通过一些简单的运算就与时钟精确仿真的结果等价。在基于FEST方法的仿真系统中,每个T内必须判断其N个t应该分别对应仿真哪个计算簇的行为。FEST方法采用了计数判断方式,即采用一个随时钟跳变的计数器,每记满N则归零。当计数器的值等于i(1≤i≤N)时,等价仿真单元就对目标系统中的第i个计算簇的行为进行仿真。这种方式比较直观,但是当被仿真的SIMD处理器中计算簇数目发生变化时,仿真系统中的计数器和所有对计数值进行判断的逻辑或模块都需要相应修改,增加了仿真系统的扩展的工作量。FEST方法能有效的增加FPGA的仿真规模,如若采用FEST方法在Altera公司的FPGA芯片EP2S180上对MASA流处理器进行仿真,芯片的仿真规模可以增加16倍。
发明内容
本发明要解决的技术问题是在利用FPGA进行体系结构仿真研究领域中,提供一种基于FPGA的体系结构仿真系统设计方法。该方法能对SIMD结构的处理器进行类时钟精确仿真,能增大FPGA的仿真规模,即当处理器中计算簇数目扩展时,能在不增加过多FPGA硬件开销的情况下实现仿真系统扩展。
本发明的方案是:沿用FEST方法的思想,使用一个与目标系统中单个计算簇功能等价的计算簇仿真单元,在一个单位时间T内对目标处理器中不同计算簇的行为依次进行仿真,从而对SIMD结构的处理器进行类时钟精确仿真。本发明采用了与FEST方法的计数式控制完全不同的方法——多频时钟耦合FPGA仿真方法,它使用一个频率为f的指令时钟控制指令缓慢流动,使用一个频率为F的数据时钟控制计算簇仿真单元对数据进行快速处理,两个时钟上升沿对齐,且根据处理器中计算簇的数目成多倍频关系,即F=N*f(N为目标系统中计算簇的数目,N为正整数)。通过两个时钟分别控制指令系统与数据系统,使得在单条指令流出后,计算簇仿真单元对多个数据实施相同的操作,从而实现一个计算簇仿真单元对多个计算簇的等价仿真。
本发明仿真系统的结构与目标系统的结构基本对应,由控制器、数据存储器、指令存储器、计算簇仿真单元和时钟锁相环组成。设计步骤如下:
1.1.利用商用FPGA仿真工具在时钟锁相环中产生两个边沿对齐的时钟,即频率为f的指令时钟和频率为F的数据时钟,F=N*f,N是目标系统中计算簇的数目。
1.2.根据目标系统的需求,完成指令存储器和数据存储器的设计,仿真系统中这两个部分与目标系统完全相同;
1.3.设计计算簇仿真单元。保持计算簇仿真单元内计算单元和互连结构与目标系统计算簇内的计算单元和互连结构一致,将各计算单元对应的本地存储器文件容量扩大至目标系统中本地存储器容量的N倍,即若目标系统本地存储器容量为C,则计算簇仿真单元的本地存储器容量变为N*C;
1.4.设计控制器。仿真系统控制器中其它功能单元与目标系统中的一致,只是地址产生模块不同。仿真系统控制器中地址产生模块包含指令存储器读/写地址控制模块、数据存储器读/写地址控制模块、本地存储器读/写地址控制模块,各模块的设计方法是:
指令存储器读/写地址控制模块由第一加法单元和第一选择单元构成。第一加法单元的一个输入是指令存储器读/写地址控制模块当前的输出,另一个输入是常数1,第一加法单元将指令存储器读/写地址控制模块当前输出加1后传输给第一选择单元。第一选择单元的一个输入是第一加法单元的输出,另一个输入是 跳转地址,第一选择单元在指令时钟控制下工作,在每个指令时钟上升沿跳变时,根据程序是否发生跳转来选择两个输入之一作为输出,若程序不发生跳转,选择第一加法单元的输出作为输出,否则选择跳转地址作为输出。
数据存储器读/写地址控制模块由第二加法单元和第二选择单元构成。第二加法单元的一个输入是数据存储器读/写地址控制模块当前的输出,另一个输入是常数1,第二加法单元将数据存储器读/写地址控制模块当前输出加1后传输给第二选择单元。第二选择单元的一个输入是第二加法单元的输出,另一个输入是基地址,第二选择单元在数据时钟控制下工作,在每个数据时钟上升沿跳变时,根据基地址是否变化选择两个输入之一作为其输出,若基地址不变化,选择第二加法单元的输出作为输出,否则选择基地址作为输出。
本地存储器读/写地址控制模块由第三加法单元、第三选择单元和微指令译码逻辑构成。第三加法单元的一个输入是本地存储器读/写地址控制模块当前的输出,另一个输入是常数C,C为目标系统中本地存储器的容量,第三加法单元将数据存储器读/写地址控制模块当前输出加C后传输给第三选择单元。微指令译码逻辑对输入的指令译码,产生指令的本地存储器读/写地址并输出给第三选择单元。第三选择单元由数据时钟和指令时钟联合控制,在指令时钟上升沿跳变时,第三选择单元选择微指令译码逻辑的输出作为本地存储器读/写地址控制模块的输出,在指令时钟不处于上升沿跳变但数据时钟上升沿跳变时,第三选择单元选择第三加法单元的输出作为本地存储器读/写地址控制模块的输出。
1.5.连接时钟锁相环、计算簇仿真单元、控制器、指令存储器和数据存储器,构成仿真系统。时钟锁相环输出指令时钟到指令存储器和控制器,输出数据时钟到控制器、数据存储器和计算簇仿真单元;控制器中的地址产生模块与指令存储器、数据存储器、计算簇仿真单元、时钟锁相环相连,它从时钟锁相环接收指令时钟和控制时钟,将指令存储器读/写地址、数据存储器读/写地址和本地存储器读/写地址分别送入指令存储器、数据存储器和计算簇仿真单元。指令存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环接收指令时钟,从控制器中的地址产生模块接收指令存储器读/写地址,并将指令送给计算簇仿真单元。数据存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环接收数据时钟,从控制器中的地址产生模块接收数据存储器读/写地址,并将数据送给计算簇仿真单元。计算簇仿真单元与时钟锁相环、数据存储器、指令存储器和控制器连接,它从时钟锁相环接收数据时钟,从控制器中的地址产生模块获取本地存储器读/写地址,从指令存储器获得指令,从数据存储器获得数据,对数据进行运算之后将运算结果写回数据存储器。
1.6.利用商用FPGA仿真工具将仿真系统烧制到FPGA芯片中。
利用本发明设计的仿真系统进行目标系统功能仿真和性能仿真的方法是:
输入测试程序集,利用仿真系统对目标系统进行功能仿真,步骤如下:
2.1.将测试程序集的二进制指令码和对应的数据集从外部存储器分别导入指令存储器和数据存储器;
2.2.将控制器地址产生模块中指令存储器读地址初始化为程序开始执行的指令地址,将数据存储器读地址初始化为对应的数据读地址,数据存储器的写地址初始化为数据返回时写入数据存储器的起始地址,启动程序执行;
2.3.将程序在仿真系统中的执行结果与目标结果进行比较,若二者完全相同,则说明功能仿真正确;
利用商用FPGA仿真工具测试仿真系统,获得仿真系统的资源消耗特性,完成目标系统的性能仿真,步骤如下:
3.1利用商用FPGA仿真工具对仿真系统资源硬件消耗(Resource仿真系统)、计算簇仿真单元硬件资源消耗(Resource计算簇仿真单元)、计算簇仿真单元中本地存储器硬件资源消耗(Resource计算簇仿真单元中的本地存储器)分别进行统计;
3.2利用商用FPGA仿真工具对目标系统计算簇中本地存储器的硬件资源消耗(Resource目标系统计算簇中本地存储器)进行统计,即将计算簇仿真单元中的本地寄存器容量减少至1/N进行测试;
3.2根据如下公式计算目标系统的资源消耗Resource目标系统:
Resource目标系统计算簇=Resource计算簇仿真单元-Resource计算簇仿真单元中本地存储器+Resource目标系统计算簇中本地存储器
Resource目标系统=Resource仿真系统-Resource计算簇仿真单元+N*Resource目标系统计算簇
采用本发明可以达到以下技术效果:
1.采用本发明可以增加FPGA仿真规模。从理论上讲,该方法最大可仿真的目标系统拥有的计算簇数目等于时钟锁相环最大可提供的时钟倍频。如Altera公司的FPGA中目前可提供两个上升沿对齐的耦合时钟,其时钟周期的倍频关系最大可达到512,那么利用本发明设计的仿真系统可在单片FPGA芯片上对具有512个计算簇的SIMD目标系统进行仿真。
2.当目标系统扩展时,采用本发明可以快速的构建相应的仿真系统。当目标系统中计算簇数目扩展时,只需要调整两耦合时钟的倍频关系和计算簇仿真单元中本地存储器容量,保证F=N*f且计算簇仿真单元中本地存储器容量为N*C,就可以完成对应的仿真系统构建。这只需对仿真系统进行少许修改(主要包括两个方面:调整时钟锁相环产生的两时钟的倍频关系,扩展本地存储器容量)后重新烧制到FPGA芯片中即可,操作简单。
3.本发明可以降低FPGA仿真的成本,便于商品化。本发明增大了FPGA的仿真规模,从而使得SIMD体系结果扩展研究的硬件成本降低;另一方面,本发明简化了仿真系统的开发,节省了目标系统验证的时间成本。FPGA厂商不需要做复杂的修改就可以为用户提供此技术支持,因此也便于商品化。
附图说明
图1是背景技术Colorado State大学的H.J.Siegel教授在Princeton大学读博期间1977年公布的典型SIMD体系结构图。
图2是背景技术清华大学郑纬民教授在《计算机体系结构》(第二版1998年)中公布的SIMD体系结构中计算簇的典型结构。
图3是背景技术SIMD体系结构中控制器中地址产生模块逻辑结构图。
图4是背景技术国防科技大学何义等人公布的基于FEST方法的仿真系统示意图。
图5是背景技术国防科技大学何义等人公布的FEST方法中控制器内地址产生模块逻辑结构图。
图6是本发明的总体流程图。
图7是采用本发明设计的SIMD体系结构仿真系统结构图。
图8是本发明第1.3步设计的计算簇仿真单元的结构示意图。
图9是本发明第1.4步设计的控制器中地址产生模块逻辑结构图。
图10是本发明中指令和数据的相对流动示意图。
图11是采用本发明的仿真系统与原目标系统FPGA资源消耗比较。
图12是采用本发明的仿真系统与采用FEST方法的仿真系统FPGA资源消耗比较。
具体实施方式
图1是Colorado State大学的H.J.Siegel教授在Princeton大学读博士学位期间1977年公布的典型SIMD体系结构图。该SIMD体系结构由控制器、指令存储器、数据存储器、多个对称的计算簇组成,多个对称的计算簇组成核心运算部件。控制器包含一个地址产生模块,该模块与指令存储器、数据存储器、所有计算簇相连,它将指令存储器读/写地址、数据存储器读/写地址和本地存储器读/写地址分别送入指令存储器、数据存储器和每个计算簇。指令存储器与控制器和所有的计算簇连接,它从控制器中的地址产生模块接收指令存储器读/写地址,并将指令送入每个计算簇。数据存储器与控制器和所有的计算簇连接,它从控制器中的地址产生模块接收数据存储器读/写地址,并将数据送入每个计算簇。所有计算簇与数据存储器、指令存储器和控制器连接,它从控制器中的地址产生模块获取本地存储器读/写地址,从指令存储器获得指令,从数据存储器获得数据,对数据进行运算之后将运算结果写回数据存储器。
图2是清华大学郑纬民教授在《计算机体系结构》(第二版1998年)一书中公布的SIMD处理器中计算簇的典型结构。计算簇包含多个计算单元、输入输出单元、通信单元、本地存储器和互连模块。多个计算单元、输入输出单元、通信单元通过互连开关与本地存储器相连。计算单元负责完成计算簇的数据处理功能,输入输出单元负责从与外部进行数据传递,通信单元负责计算簇之间的通信,本地存储器用于存储需要处理的数据和处理的中间结果。本地存储器与计算单元的对应关系由互连的方式决定,总体可以分为共享本地存储器结构和分布式本地存储器结构。共享本地存储器结构即所有计算单元可以访问所有的存储器,分布式本地存储器结构即每个计算单元只能访问与之对应的本地存储器。
图3是图1所示SIMD处理器中的控制器内的地址产生模块逻辑结构图。地址产生模块由指令存储器读/写地址控制模块、数据存储器读/写地址控制模块和本地存储器读/写地址控制模块组成,所有模块都在同一个系统时钟下工作。
指令存储器读/写地址控制模块由第一加法单元和第一选择单元构成。第一加法单元的一个输入是指令存储器读/写地址控制模块当前的输出,另一个输入是常数1,第一加法单元将指令存储器读/写地址控制模块当前输出加1后传输给第一选择单元。第一选择单元的一个输入是第一加法单元的输出,另一个输入是跳转地址。第一选择单元在系统时钟控制下工作,在每个系统时钟上升沿跳变时,根据程序是否发生跳转来选择两个输入之一作为其输出,若程序不发生跳转,选择第一加法单元的输出作为输出,否则将选择跳转地址作为输出。
数据存储器读/写地址控制模块由第二加法单元和第二选择单元构成。第二加法单元的一个输入是数据存储器读/写地址控制模块当前的输出,另一个输入是常数N,第二加法单元将数据存储器读/写地址控制模块当前输出加N后送入第二选择单元。第二选择单元的一个输入是第二加法单元的输出,另一个输入是基地址。第二选择单元在每个系统时钟上升沿跳变时,根据基地址是否变化来选择两个输入之一作为其输出。若基地址不变化,则选择第二加法单元的输出作为输出,否则将选择基地址作为输出。
本地存储器读/写地址控制模块由微指令译码逻辑构成。在系统时钟上升沿跳变时,微指令译码逻辑对输入的指令进行译码,产生指令的本地存储器读/写地址作为本地存储器读/写地址控制模块的输出。
图4是背景技术国防科技大学何义等人在国际会议ACSAC2008上公布的采用FEST方法构建的FPGA仿真系统示意图。该仿真系统包括控制器、指令存储器、数据存储器、等价仿真单元、N个SPS和时钟锁相环等部分。控制器内包含一个地址产生模块,与图1中地址产生模块相比,FEST方法的地址产生模块中增加了一个计数器。
所有的模块都与时钟锁相环相连,从时钟锁相环中接收时钟,即采用FEST方法的FPGA仿真系统是在统一系统时钟下工作。地址产生模块与指令存储器、数据存储器以及所有的SPS相连,它将指令存储器读/写地址、数据存储器读/写地址和本地存储器读/写地址分别送入指令存储器、数据存储器和每个SPS。指令存储器与控制器和等价仿真单元连接,它从控制器中的地址产生模块接收指令存储器读/写地址,并将指令送入等价仿真单元。数据存储器与控制器和所有的SPS连接,它从控制器中的地址产生模块接收数据存储器读/写地址,并将数据 送入每个SPS。N个状态保存空间SPS分别对应存储目标系统中N个计算簇执行时的中间状态,所有SPS与数据存储器、控制器和等价仿真单元连接,它从控制器中的地址产生模块接收本地存储器读/写地址,从数据存储器获得数据送入等价仿真单元,并从等价仿真单元中获得计算结果写回数据存储器。等价仿真单元与指令存储器和所有的SPS相连,它从指令存储器中获取指令,从SPS中获得数据,执行指令对数据进行处理,中间结果以及最终的计算结果都返回至SPS。
图5是是背景技术国防科技大学何义等人公布的FEST方法中控制器内地址产生模块逻辑结构图。地址产生模块由计数器、指令存储器读/写地址控制模块、数据存储器读/写地址控制模块和本地存储器读/写地址控制模块组成。
计数器由第四加法单元和第五选择单元组成,第四加法单元的一个输入是计数器当前的输出,另一个输入是常数1,第四加法单元将上周期计数器的值加1后送入第五选择单元。第五选择单元的一个输入是第四加法单元的输出,另一个输入为0。当第四加法单元的值不等于N时,第五选择单元选择第四加法单元输出,否则选择0输出。也就是说,计数器反复的输出0~(N-1)的整数。计数器的输出送给指令存储器读/写地址控制模块和本地存储器读/写地址控制模块,分别作为第二选择单元和第四选择单元的选择条件。
指令存储器读/写地址控制模块由第一加法单元、第一选择单元和第二选择单元构成。第二选择单元的两个输入分别为0和1,选择条件输入是计数器的输出。当计数值等于0时,第二选择单元将1送给第一加法单元,否则将0送给第一加法单元。第一加法单元的一个输入是指令存储器读/写地址控制模块当前的输出,另一个输入是第二选择单元的输出,当计数值为0时,第一加法单元将当前指令存储器读/写地址加1后送给第一选择单元,否则将当前指令存储器读/写地址保持不变送给第一选择单元。第一选择单元的一个输入是第一加法单元的输出,另一个输入是跳转地址。第一选择单元在在每个系统时钟上升沿跳变时,根据程序是否发生跳转来选择两个输入之一作为其输出。若程序不发生跳转,选择第一加法单元的输出作为输出,否则将选择跳转地址作为输出。
数据存储器读/写地址控制模块由第二加法单元和第三选择单元构成。第二加法单元的一个输入是数据存储器读/写地址控制模块当前的输出,另一个输入 是常数1。第二加法单元将数据存储器读/写地址控制模块当前输出加1后送入第三选择单元。第三选择单元的一个输入是第二加法单元的输出,另一个输入是基地址。在每个数据时钟上升沿跳变时,第三选择单元根据基地址是否变化来选择两个输入之一作为输出,若基地址不变化,则选择第二加法单元的输出作为输出,否则选择基地址作为输出。
本地存储器读/写地址控制模块由第三加法单元、第四选择单元和微指令译码逻辑构成。第三加法单元的一个输入是本地存储器读/写地址控制模块当前的输出,另一个输入是常数S,S为一个SPS的容量,第三加法单元将数据存储器读/写地址控制模块当前输出加S后送给第四选择单元。微指令译码逻辑对输入的指令译码,产生指令的本地存储器读/写地址作为输出。第四选择单元的两个输入分别是第三加法单元的输出和微指令译码单元的输出,选择条件输入是计数器的输出。在每个系统时钟上升沿跳变时,第四选择单元根据计数值来选择两个输入之一作为其输出,若计数值为0,选择微指令译码逻辑的输出作为本地存储器读/写地址控制模块的输出,否则选择第三加法单元的输出作为本地存储器读/写地址控制模块的输出。
图6是发明的总体流程图:
1.1.利用商用FPGA仿真工具在时钟锁相环中产生两个边沿对齐的时钟,即频率为f的指令时钟和频率为F的数据时钟,F=N*f。
1.2.根据目标系统的需求,完成指令存储器和数据存储器的设计,这两个部分的设计与目标系统相同;
1.3.设计如图8所示的计算簇仿真单元,。
1.4.设计仿真系统控制器,主要是设计控制器中的地址产生模块,如图9所示。
1.5.连接时钟锁相环、计算簇仿真单元、控制器、指令存储器和数据存储器,构成仿真系统,如图7所示。
1.6.利用商用FPGA仿真工具将仿真系统烧制到FPGA芯片中。
图7是本发明构建的SIMD结构处理器仿真系统结构图。仿真系统的结构与目标系统的结构基本对应,包括控制器、数据存储器、指令存储器、算簇仿真单元和时钟锁相环等几个主要功能模块。
时钟锁相环输出指令时钟到指令存储器和控制器,输出数据时钟到控制器、 数据存储器和计算簇仿真单元;控制器中的地址产生模块与指令存储器、数据存储器、计算簇仿真单元、时钟锁相环相连,它从时钟锁相环接收指令时钟和控制时钟,将指令存储器读/写地址、数据存储器读/写地址和本地存储器读/写地址分别送入指令存储器、数据存储器和计算簇仿真单元。指令存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环接收指令时钟,从控制器中的地址产生模块接收指令存储器读/写地址,并将指令送给计算簇仿真单元。数据存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环接收数据时钟,从控制器中的地址产生模块接收数据存储器读/写地址,并将数据送给计算簇仿真单元。计算簇仿真单元与时钟锁相环、数据存储器、指令存储器和控制器连接,它从时钟锁相环接收数据时钟,从控制器中的地址产生模块获取本地存储器读/写地址,从指令存储器获得指令,从数据存储器获得数据,对数据进行运算之后将运算结果写回数据存储器。
在本发明的仿真系统中,指令存储器在指令时钟频率下工作,数据存储器和计算簇仿真单元在数据时钟频率下工作。在单条指令流出后,计算簇仿真单元对多个数据实施相同的操作,从而实现一个计算簇仿真单元对多个计算簇的等价仿真。对比图5可以看出,本发明摒弃了FEST方法中复杂的计数器控制和判断逻辑,简化了仿真系统的设计。
图8是本发明中第1.3步设计的计算簇仿真单元的结构示意图。保持图2中目标系统计算簇内的计算单元和互连结构不变,将目标系统的计算簇内各功能单元对应的本地存储器文件容量扩大至目标系统中寄存器文件容量的N倍(N是目标系统中计算簇的数目,N为正整数),即若目标系统本地存储器容量为C,则计算簇仿真单元的本地存储器容量变为N*C。
图9是本发明第1.4步设计的控制器中地址产生模块逻辑结构图。地址产生模块包含指令存储器读/写地址控制模块、数据存储器读/写地址控制模块、本地存储器读/写地址控制模块,各模块的设计方法是:
指令存储器读/写地址控制模块由第一加法单元和第一选择单元构成。第一加法单元的一个输入是指令存储器读/写地址控制模块当前的输出,另一个输入是常数1,第一加法单元将指令存储器读/写地址控制模块当前输出加1后传输给第一选择单元。第一选择单元的一个输入是第一加法单元的输出,另一个输入是 跳转地址,第一选择单元在指令时钟控制下工作,在每个指令时钟上升沿跳变时,根据程序是否发生跳转来选择两个输入之一作为输出,若程序不发生跳转,选择第一加法单元的输出作为输出,否则选择跳转地址作为输出。
数据存储器读/写地址控制模块由第二加法单元和第二选择单元构成。第二加法单元的一个输入是数据存储器读/写地址控制模块当前的输出,另一个输入是常数1,第二加法单元将数据存储器读/写地址控制模块当前输出加1后传输给第二选择单元。第二选择单元的一个输入是第二加法单元的输出,另一个输入是基地址,第二选择单元在数据时钟控制下工作,在每个数据时钟上升沿跳变时,根据基地址是否变化选择两个输入之一作为其输出,若基地址不变化,选择第二加法单元的输出作为输出,否则选择基地址作为输出。
本地存储器读/写地址控制模块由第三加法单元、第三选择单元和微指令译码逻辑构成。第三加法单元的一个输入是本地存储器读/写地址控制模块当前的输出,另一个输入是常数C,C为目标系统中本地存储器的容量,第三加法单元将本地存储器读/写地址控制模块当前输出加C后传输给第三选择单元。微指令译码逻辑对输入的指令译码,产生指令的本地存储器读/写地址并输出给第三选择单元。第三选择单元由数据时钟和指令时钟联合控制,在指令时钟上升沿跳变时,第三选择单元选择微指令译码逻辑的输出作为本地存储器读/写地址控制模块的输出,在指令时钟不处于上升沿跳变但数据时钟上升沿跳变时,第三选择单元选择第三加法单元的输出作为本地存储器读/写地址控制模块的输出。
图10是本发明中指令和数据的相对流动的示意图。指令在一个较低频率的时钟下控制流动,数据在一个较高频率的时钟控制下流动,且两时钟频率满足F=N*f,所以指令保持时间是数据保持时间的N倍。即一条指令流入计算簇仿真单元后,在下一条指令流入之前,将会有N个数据流入计算簇仿真单元并被依次处理。若依照指令时钟的角度来看,这些数据都是在同一个时钟周期内被处理完毕。这直观的支持了对SIMD结构的处理器进行类时钟精确仿真。
图11是采用本发明设计的仿真系统与原目标系统FPGA资源消耗比较。采用本发明不能减少仿真系统对存储型资源的消耗,但能非常有效的减少计算型资源的消耗。图中可以看出,当目标系统中的计算簇数目增加时,目标系统对FPGA中计算型资源的需求急剧增加,而采用本发明,由于所有的计算簇均由一个计算 簇仿真单元仿真,而且没有增加复杂的控制逻辑,计算型资源的消耗基本不增加。这些节省的计算型资源可以用于对更大规模的处理器进行仿真,因此,本发明能有效的增加FPGA的仿真规模。
图12是采用本发明设计的仿真系统与采用FEST方法设计的仿真系统FPGA资源消耗比较。图中可以看出,本发明的资源消耗要优于FEST方法,其主要原因是本发明减少了FEST方法中的计数器逻辑以及计数判断和控制逻辑。本发明相对于FEST方法最大的优势是在仿真系统扩展时不受计数器的约束,有更好的扩展性和灵活性。
Claims (1)
1.一种基于FPGA的体系结构仿真系统设计方法,其特征在于包括以下步骤:
1.1.利用商用FPGA仿真工具在时钟锁相环中产生两个边沿对齐的时钟,即频率为f的指令时钟和频率为F的数据时钟,F=N*f,N是目标系统中计算簇的数目;
1.2.根据目标系统的需求,完成指令存储器和数据存储器的设计,仿真系统中这两个部分与目标系统完全相同;
1.3.设计计算簇仿真单元,保持计算簇仿真单元内计算单元和互连结构与目标系统计算簇内的计算单元和互连结构一致,将各计算单元对应的本地存储器文件容量扩大至目标系统中本地存储器容量的N倍,即若目标系统本地存储器容量为C,则计算簇仿真单元的本地存储器容量变为N*C;
1.4.设计控制器,仿真系统控制器中其它功能单元与目标系统中的一致,只是地址产生模块不同,仿真系统控制器中地址产生模块也由指令存储器读/写地址控制模块、数据存储器读/写地址控制模块、本地存储器读/写地址控制模块组成:
指令存储器读/写地址控制模块由第一加法单元和第一选择单元构成,第一加法单元的一个输入是指令存储器读/写地址控制模块当前的输出,另一个输入是常数1,第一加法单元将指令存储器读/写地址控制模块当前输出加1后传输给第一选择单元;第一选择单元的一个输入是第一加法单元的输出,另一个输入是跳转地址,第一选择单元在指令时钟控制下工作,在每个指令时钟上升沿跳变时,根据程序是否发生跳转来选择两个输入之一作为输出,若程序不发生跳转,选择加法单元的输出作为输出,否则选择跳转地址作为输出;
数据存储器读/写地址控制模块由第二加法单元和第二选择单元构成,第二加法单元的一个输入是数据存储器读/写地址控制模块当前的输出,另一个输入是常数1,第二加法单元将数据存储器读/写地址控制模块当前输出加1后传输给第二选择单元;第二选择单元的一个输入是第二加法单元的输出,另一个输入是基地址,第二选择单元在数据时钟控制下工作,在每个数据时钟上升沿跳变时,根据基地址是否变化选择两个输入之一作为其输出,若基地址不变化,选择第二加法单元的输出作为输出,否则选择基地址作为输出;
本地存储器读/写地址控制模块由第三加法单元、第三选择单元和微指令译码逻辑构成,第三加法单元的一个输入是本地存储器读/写地址控制模块当前的输出,另一个输入是常数C,C为目标系统中本地存储器的容量,第三加法单元将数据存储器读/写地址控制模块当前输出加C后传输给第三选择单元;微指令译码逻辑对输入的指令译码,产生指令的本地存储器读/写地址并输出给第三选择单元;第三选择单元由数据时钟和指令时钟联合控制,在指令时钟上升沿跳变时,第三选择单元选择微指令译码逻辑的输出作为本地存储器读/写地址控制模块的输出,在指令时钟不处于上升沿跳变但数据时钟上升沿跳变时,第三选择单元选择第三加法单元的输出作为本地存储器读/写地址控制模块的输出;
1.5.连接时钟锁相环、计算簇仿真单元、控制器、指令存储器和数据存储器,构成仿真系统;时钟锁相环输出指令时钟到指令存储器和控制器,输出数据时钟到控制器、数据存储器和计算簇仿真单元;控制器中的地址产生模块与指令存储器、数据存储器、计算簇仿真单元、时钟锁相环相连,它从时钟锁相环获取指令时钟和控制时钟,将指令存储器读/写地址、数据存储器读/写地址和本地存储器读/写地址分别送入指令存储器、数据存储器和计算簇仿真单元;指令存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环获取指令时钟,从控制器中的地址产生模块获取指令存储器读/写地址,并将指令送给计算簇仿真单元;数据存储器与时钟锁相环、控制器和计算簇仿真单元连接,它从时钟锁相环获取数据时钟,从控制器中的地址产生模块获取数据存储器读/写地址,并将数据送给计算簇仿真单元;计算簇仿真单元与时钟锁相环、数据存储器、指令存储器和控制器连接,它从时钟锁相环获取数据时钟,从控制器中的地址产生模块获取本地存储器读/写地址,从指令存储器获得指令,从数据存储器获得数据,对数据进行运算之后将运算结果写回数据存储器;
1.6.利用商用FPGA仿真工具将仿真系统烧制到FPGA芯片中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910043827XA CN101620643B (zh) | 2009-07-03 | 2009-07-03 | 一种基于fpga的体系结构仿真系统设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910043827XA CN101620643B (zh) | 2009-07-03 | 2009-07-03 | 一种基于fpga的体系结构仿真系统设计方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101620643A CN101620643A (zh) | 2010-01-06 |
CN101620643B true CN101620643B (zh) | 2011-03-09 |
Family
ID=41513877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910043827XA Expired - Fee Related CN101620643B (zh) | 2009-07-03 | 2009-07-03 | 一种基于fpga的体系结构仿真系统设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101620643B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102854801A (zh) * | 2012-09-25 | 2013-01-02 | 北京京航计算通讯研究所 | 一种基于分时复用的大数据量fpga仿真测试方法 |
DE102018100423A1 (de) * | 2018-01-10 | 2019-07-11 | Dspace Digital Signal Processing And Control Engineering Gmbh | Inkrementelles Generieren einer FPGA Implementierung mit Graphen-basierter Ähnlichkeitssuche |
CN114860029B (zh) * | 2022-04-22 | 2024-01-26 | 芯华章科技股份有限公司 | 多时钟域数字仿真电路的时钟生成方法、设备和存储介质 |
-
2009
- 2009-07-03 CN CN200910043827XA patent/CN101620643B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101620643A (zh) | 2010-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Van Der Weide et al. | Unsteady turbomachinery computations using massively parallel platforms | |
CN101788931B (zh) | 一种硬件实时容错的动态局部可重构系统 | |
CN108537331A (zh) | 一种基于异步逻辑的可重构卷积神经网络加速电路 | |
Bao et al. | FPGA-based reconfigurable data acquisition system for industrial sensors | |
CN103984560A (zh) | 基于大规模粗粒度嵌入式可重构系统及其处理方法 | |
US10180996B2 (en) | Multi-component computational fluid dynamics simulations | |
Liu et al. | Sunwaylb: Enabling extreme-scale lattice boltzmann method based computing fluid dynamics simulations on sunway taihulight | |
CN102945224A (zh) | 基于fpga的高速可变点fft处理器及其处理方法 | |
Zhu et al. | Global optimization of non-convex hydro-thermal coordination based on semidefinite programming | |
CN106202761A (zh) | 用于大容量fpga电路功能仿真的最优网表的生成方法 | |
CN101620643B (zh) | 一种基于fpga的体系结构仿真系统设计方法 | |
CN103345580A (zh) | 基于格子Boltzmann方法的并行CFD方法 | |
CN104298827A (zh) | 一种基于Petri网的异步电路建模和VHDL实现方法 | |
CN106776044B (zh) | 基于数据流的硬件加速方法及系统 | |
CN112307629A (zh) | 基于Thermolib软件包的综合能源多能流统一实时仿真系统及方法 | |
CN104899385B (zh) | 异构多核的SoC设计评估系统 | |
CN103078729B (zh) | 基于fpga的双精度混沌信号发生器 | |
CN202395792U (zh) | 基于fpga的双精度混沌信号发生器 | |
CN102129495B (zh) | 一种降低可重构算子阵列结构功耗的方法 | |
WO2017104149A1 (ja) | 設計方法、設計プログラム及び設計装置 | |
Jiang et al. | Reduced multiscale computation on adapted grid for the convection-diffusion Robin problem | |
CN105676995A (zh) | 一种实现三维测量芯片低功耗的方法 | |
CN101236576B (zh) | 一种适用于异质可重构处理器的互联模型 | |
Liu et al. | SunwayLB: Enabling Extreme-Scale Lattice Boltzmann Method Based Computing Fluid Dynamics Simulations on Advanced Heterogeneous Supercomputers | |
Han et al. | Clocked and asynchronous FIFO characterization and comparison |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110309 Termination date: 20120703 |