技术新讯 > 计算推算,计数设备的制造及其应用技术 > 一种用于处理器芯片架构验证的软硬件联合仿真平台  >  正文

一种用于处理器芯片架构验证的软硬件联合仿真平台

  • 国知局
  • 2024-12-06 12:34:29

本发明属于集成电路设计,具体涉及一种用于处理器芯片架构验证的软硬件联合仿真平台。

背景技术:

1、随着上层应用负载类型的快速发展与日益丰富,处理器芯片作为支撑应用负载算力需求的底座,同样需要及时更新其芯片架构来匹配上层应用负载的需求。对先进的体系架构设计方案进行仿真验证是处理器芯片架构迅速迭代更新的重要助推。传统处理器芯片架构开发流程涵盖了电子级系统软件仿真和硬件仿真等若干流程。具体为工程师首先在电子级系统软件仿真平台上建立软件模型进行验证和架构探索,然后模型做硬件实现并使用测试激励进行验证,最终将硬件模型嵌入到基于硬件的处理器芯片架构验证平台中调试。其中,电子级系统软件仿真模拟器提供了较高层次的建模,适用于架构探索的早期阶段,但其仿真结果可能与真实的硬件仿真存在差异,如流水线细节和资源竞争。硬件仿真的主要目的是确保架构的可实现性和可靠性。这一流程周期长且验证开销极大,在这个流程中如果验证结果不符合预期,需要退回到前面的阶段修改设计。因此,目前迫切需要优化传统的处理器芯片架构开发与验证流程,突破软件仿真和硬件仿真间的隔阂,融合简化芯片架构开发与验证的各个阶段,从而满足快速迭代处理器芯片架构的现实需求。

技术实现思路

1、本发明的目的在于提出一种高性能、高灵活性、强兼容性的用于处理器芯片架构验证的软硬件联合仿真平台。

2、本发明提出的用于处理器芯片架构验证的软硬件联合仿真平台(简称仿真平台),可以直接应用于高性能处理器架构的设计、开发与验证流程中,简化芯片的设计开发与验证流程,提升芯片架构的研发效率。本发明的软硬件联合仿真平台基本实现方式是由软件仿真器模拟一个完整的处理器芯片,由硬件fpga模拟一个新开发或者待评测的核心模块;仿真平台负责软件仿真器和硬件fpga之间的无感通信,并负责将软件仿真器上模拟的处理器芯片对核心模块的访问请求转发给运行在fpga上的核心模块,也将核心模块产生的请求或响应反馈给处理器芯片;每一个核心模块在软件仿真器中都有一个对应的虚拟模块,被仿真的处理器芯片会正常地和虚拟模块交互,当虚拟模块收到请求后提交给本发明提出的仿真平台。因此,本发明提出的软硬件联合仿真平台是一个横跨硬件和软件的架构,架构的软件部分包括调度模块、提交模块、采集模块、执行任务表和4个环形无锁队列,硬件部分包括数据包预处理模块、信号转换模块和2个环形无锁队列;其中:

3、所述执行任务表,记录仿真平台接收到的请求的详细信息;

4、所述调度模块,负责接收来自软件仿真器对核心模块的访问请求,根据请求的类型在执行任务表中申请对应的表项,同时需要配置提交模块和采集模块开启响应的工作。对于无需响应的请求,调度模块仅需配置提交模块执行该请求往硬件fpga的传递工作,对于需要响应的请求,调度模块需要同时配置提交模块和采集模块。其中,采集模块的配置有2种选项,一种是轮询模式,即当提交模块传递完请求后,采集模块需要不断往硬件fpga发送请求查询硬件执行结果;另一种模式是中断模式,即当硬件fpga执行完成后会通知采集模块,采集模块才会发起主动发起请求索要执行结果。调度模块通过2个环形无锁队列分别和提交模块和采集模块交互。

5、所述提交模块,负责将调度模块准备完毕的请求进行修饰成符合通信协议标准的数据包进行传递。在修饰数据包时,提交模块支持合并若干个请求进行一次传递通信来抵消大量的通信代价。具体的,当提交模块在执行下一次提交前发现环形无锁队列中有大于1个请求等待传递时,提交模块可以将若干个请求进行合并,并为这些请求额外增加一个数据包报头,用于指示当前数据包融合的请求数量以及类型。

6、所述采集模块,负责从硬件fpga中获取硬件核心模块的执行结果。当调度模块告知采集模块需要跟踪某一请求的响应时,采集模块会开始运作。采集模块支持2种模式,分别是轮询模式和中断模式,对应着采集模块获取硬件执行结果的方式。轮询模式需要由采集模块不断发起获取执行请求结果的请求才能够最终获取到数据,而中断结果由硬件负责告知采集模块取回硬件执行结果。两种模式适用于不同的场景,其中轮询模式适用于对仿真时间敏感的应用场景,而中断模式适用于对仿真时间宽容度高的场景。

7、所述数据包预处理模块,负责数据包的接收、重组、解析,以及数据包的收集、分割、发送。受到通信协议的带宽限制,软件仿真器和硬件仿真器之间的通信可能会被拆分成若干个数据包进行传递。数据包预处理模块需要负责接收被拆散的数据包,在收齐所有的数据包后,预处理模块会对数据包进行排序重组。恢复成原始数据包后,需要解码报头,根据报头信息对数据包中的请求进行拆分,拆分出的每一个独立请求都会被送入到队列中,用于通知信号转换模块做下一阶段的处理。数据包预处理模块还负责数据包的发送,硬件核心模块执行完成的结果会被陆续发送至数据包预处理模块,模块内会收集整理这些执行结果。根据采集模块的配置不同,数据包预处理模块会执行不同的行为。当采集模块处于轮询模式时,数据包预处理模块会等到采集模块发起下一次轮询请求时,打包当前收集到的核心模块执行结果,并修饰数据包报头后将其发送。当采集模块处于中断模式时,数据包预处理模块在收集到核心模块的执行结果后立即通知采集模块取回硬件执行结果。

8、所述信号转换模块,负责对来自软件仿真器的请求进行解析,并配置核心硬件模块的输入信号,以及采集核心硬件模块的输出信号,并将其组装成符合软件仿真器可识别的响应,在组装响应时还会附加一定的硬件执行信息,例如核心模块的执行时钟周期数。信号转换模块是本发明提出的软硬件联合仿真平台具备极高兼容性的核心之一,任何需要硬件仿真的核心模块与本发明提出的软硬件联合仿真平台通过信号转换模块做了解耦。信号转换模块从与数据包预处理模块相连的2个队列中分别获取请求和发送响应。

9、本发明中,软件侧架构的职责是,将软件仿真器对模块的请求修饰成符合通信协议的数据包发送给硬件fpga。软件侧的框架由一张执行任务表,4个环形无锁队列和调度模块、提交模块、采集模块构成。执行任务表记录平台接收到的请求的详细信息,调度模块负责软件仿真器请求的分析、修饰与解析。提交模块负责将调度模块组装完成的请求下发给硬件fpga。同样的,采集模块也单独负责从硬件fpga中获取需要与处理器芯片交互的信息。当软件仿真器发起对硬件核心模块的请求后,可以继续正常仿真。后续的流程交由本发明提出的软硬件联合仿真平台,该平台首先从执行任务表中申请一个表项执行填充请求,然后将表项序号插入到任务队列中。紧接着,调度模块从任务队列中根据取出的表项序号访问执行任务表,分析请求的特性,比如人工智能引擎的推理请求需要携带推理所需的信息,同时也需要从rtl模块取回推理结果。接着,调度模块在将请求组装完成并插入到预提交队列后还会配置采集模块发起请求获取响应。当取回响应后,采集模块会将结果填充到执行任务表对应的表项并将表项序号插入到后采集队列中。调度模块接下来会将已经就绪的表项修饰成符合软件仿真器标准的响应插入到结果中,直到一定的时延后,软件仿真器会取走这个响应。

10、本发明中,硬件侧结构由硬件实现并与核心硬件模型连接后被一起部署在fpga上。仿真平台首先解析fpga接收到的数据包。由于软件仿真器对硬件核心模块请求或响应的数据位宽可能大于通信协议支持的位宽上限,因此还需要借助数据包预处理模块收集若干个数据包后进行重组,并解析成初始的软件仿真器发起的请求或响应插入到任务队列中。这个队列的每一个表项由任务头和负载构成,前者是维持软硬件联合仿真平台运作的必要信息,如该请求或响应在软件侧架构的执行任务表的表项序号,后者是真正的请求或响应。硬件侧框架的信号转换模块直接与硬件核心模块相连,它从任务队列中接收任务并根据任务负载的信息配置硬件核心模块的输入,同时记录硬件核心模块做出响应的时间和硬件核心模块的输出,组装成数据包后再插入到结果队列中。数据预处理模块会根据通信协议的配置,将数据包拆分成若干个传递给联合仿真平台的软件侧。

11、本发明中,仿真平台采用的乐观同步机制,用于解决软件仿真器和硬件仿真器的仿真速度差异大的问题;当软件仿真器向核心硬件模块发起请求后,软件仿真器会原地等待直到联合仿真平台从硬件核心模块获取到响应以及执行的时钟周期数x,然后软件仿真器会调度一个x时钟周期后的事件,该事件模拟出发硬件核心模块做出响应这一行为。同时,联合仿真平台在接收一个软件仿真器的请求时会调度一个y时钟周期后的事件,y时钟周期是对硬件核心模块最短执行时间的预估,这代表着软件仿真器在发起请求后可以无风险地继续仿真y个时钟周期。如果软硬件联合仿真平台可以在软件仿真器仿真这y个时钟周期的时间内送回硬件核心模块的响应,那么软件仿真器可以不停顿地仿真。否则,软件仿真器会在y个时钟周期后原地等待直到获取到响应。在接收到响应后,软件仿真器将事件重新安排在(x-y)周期之后发生,从而正式接受响应。对于能够主动发起请求的硬件核心模块,软硬件联合仿真平台会不断询问硬件核心模块的请求情况。当硬件核心模块发起一个对处理器芯片的请求后,它会乐观地继续执行预期的时钟周期数。此时,软件仿真器会接收到2个时间信息,它需要在第一时间点处理硬件核心模块的请求,第二个时间点是硬件核心模型在最差情况下的下一次发起主动请求的预估,这意味着软件仿真器将响应送回硬件核心模块后仍能继续仿真到第二个时间点。

12、本发明中,软硬件联合仿真平台的提交模块采用批处理请求方法,该方法允许提交模块合并若干个请求进行一次通信可以抵消大量的通信代价。在人工智能推理引擎的场景下,处理器芯片可能对引擎发起频繁的推理请求,部分请求可能在框架内发生拥塞。当提交模块在发起通信请求时,会根据平台允许的批处理数量将若干个请求合并一个包,并添加一个报头指示该包的批信息。软硬件联合仿真平台的硬件侧架构首先会从几个零散的数据包中组合成一个完整的包,然后再根据报头的信息从包中解析出几个请求陆续插入到任务队列中。

13、本发明中,软硬件联合仿真平台采用数据流融合方法。该方法将处理器芯片发起的几个连续地址的任务去掉头信息融合成一个包并统一填写头信息。这个包仍会以若干个数据包的形式抵达框架的硬件侧,不同于控制流型场景需要等收集齐全部包片段,数据流型场景下可以直接为抵达的数据修饰对应的任务头信息后插入到任务队列中。

14、进一步地,在某次软件仿真器对硬件核心模块的访问中,软硬件联合仿真平台的处理流程如下:

15、(1)调度过程。软件仿真器将请求插入到任务队列后,调度模块从队列中获取请求细节,并根据请求类型分发到预提交队列中。

16、(2)提交过程。提交模块从预提交队列中获取到请求后,将其修饰成符合通信协议标准的数据包,并将其发送给硬件fpga。

17、(3)数据包解析过程。硬件fpga中的数据包预处理模块收齐数据包后,将其解析成原始请求,并将其插入到通往信号转换模块的队列中。

18、(4)信号转换过程。信号转换模块根据请求中的信息配置核心模块的输入信号。

19、(5)核心模块执行。核心模块接收到输入激励后,按照既定逻辑执行,并置位对应的输出信号。

20、(6)信号转换过程。信号转换模块监听核心模块的输出信号,在获取到输出信号后,附上执行时钟周期数等信息,组装成软件仿真器可识别的响应,并发送给通往数据预处理模块的队列中。

21、(7)数据包切分过程。数据包预处理模块在接收到响应后,通过中断的方式通知采集模块获取硬件执行结果,并将数据包切分成符合通信协议带宽要求的若干个包。

22、(8)采集过程。采集模块获取到数据包后,根据数据包的报头将相应从数据包中解析出来,并送入到后采集队列中。

23、(9)调度过程。后采集队列中存在响应会触发调度模块运作,由其负责将数据包传递给软件仿真器可访问的结果队列。

24、(10)获取响应。软件仿真器从结果队列中获取到硬件执行结果。

25、与现有技术相比,本发明的有益技术效果体现在:

26、(1)本发明同时集成了软件仿真器和硬件fpga,并借助乐观同步机制在发挥两者优势的同时,避免了仿真速度不协同对整体仿真效果和速度产生的影响。

27、(2)本发明为处理器芯片的架构仿真提供了全面的架构探索能力,支持软件仿真器建模的处理器芯片架构提供高自由度的参数配置能力来支持快速的迭代仿真,以及fpga平台提供真实的硬件性能使得架构探索结果更有说服力。

28、(3)本发明采用硬件fpga作为硬件核心模块的仿真平台,充分利用了fpga平台现存的天然生态优势,任何能够部署在fpga平台上的模块均可以直接在本发明提出的联合仿真平台下开启仿真。该联合仿真平台也利用了fpga速度快的优势克服目前联合平台的仿真速度不足这一严重问题。

本文地址:https://www.jishuxx.com/zhuanli/20241204/342148.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。