基于片上网络互连的多核存储系统仿真器的制造方法

文档序号:6543656阅读:108来源:国知局
基于片上网络互连的多核存储系统仿真器的制造方法
【专利摘要】本发明公开了一种基于片上网络互连的多核存储系统仿真器,其特征在于所述仿真器以SystemC的内核作为整个仿真器的驱动内核,包括用于仿真各个处理器核心的一级高速缓存的缓存模块、用于仿真各个处理器核心的二级高速缓存的路由模块和用于提供功能仿真的QEMU模块;若干个路由模块互连仿真处理器核心共享的二级高速缓存形成的片上网络,每个路由模块设置有一组与缓存模块连接的信号线;所述路由模块将缓存模块或者路由模块传递的pkt消息分发到另一缓存模块或者另一路由模块。该仿真器能够用来进行目标系统的系统软件开发,使得软硬件开发可以同时进行,加快系统开发速度。
【专利说明】基于片上网络互连的多核存储系统仿真器
【技术领域】
[0001]本发明属于存储系统仿真领域,具体涉及一种基于片上网络互连的多核存储系统仿真器。
【背景技术】
[0002]早期的单核计算机系统通过提升芯片频率达到提高计算机性能的目的,但是随之而来的是产生过多的热量且不能得到相应的性能提升,于是产生了多核。为了对多核处理器及其片上网络进行研究,可使用体系结构仿真技术进行模拟,并运行程序进行测试和验证。当前主流的系统仿真器比如Simplescalar、M5主要是模拟处理器,每个仿真器都有各自的关注点。比如前者主要是模拟处理器的执行过程,后者主要是仿真网络主机,很少有仿真器把重点放在存储系统上。现有的仿真器大都使用高级语言编写,而仿真过程模拟的是硬件的功能,传统的方法是使用高级语言编写代码后,再转化为硬件语言描述,整个实现的过程周期长、效率低。

【发明内容】

[0003]本发明目的在于提供一种基于片上网络互连的多核存储系统仿真器,解决了多核下存储系统互连问题。存储系统的执行过程可以细化到时钟级,与真实系统的执行过程类似,采用SystemC语言描述的系统更接近真实系统的工作过程。多核下的互连采用片上网络结构,片上网络的优点是易于扩展,如若需要往整个系统中再添加新的核心,只需在片上网络中再添加一路由器并连接一处理器,整个系统可以照常运行。
[0004]为解决现有方法中的问题,本发明提供的技术方案是:
[0005]一种基于片上网络互连的多核存储系统仿真器,其特征在于所述仿真器以SystemC的内核作为整个仿真器的驱动内核,包括用于仿真各个处理器核心的一级高速缓存的缓存模块、用于仿真各个处理器核心的二级高速缓存的路由模块和用于提供功能仿真的QEMU模块;若干个路由模块互连仿真处理器核心共享的二级高速缓存形成的片上网络,每个路由模块设置有一组与缓存模块连接的信号线;所述路由模块将缓存模块或者路由模块传递的Pkt消息分发到另一缓存模块或者另一路由模块。
[0006]优选的技术方案中:所述pkt消息包括data字段、id字段、dest数组字段、addr字段、cur_addr字段、change_data字段、index字段;其中data字段用于存储消息中的数据;id字段用于表示路由模块的编号;dest数组字段用于表示pkt信息需要发送的目的地;addr字段表示缓存行的地址;cur_addr字段表示缓存行的起始地址;change_data字段表示写操作的数据;index字段为标记字段。
[0007]优选的技术方案中:所述pkt消息中index字段为O时,表示没有特殊功能;index字段为I时,从二级缓存或DRAM中取块并返回给发送者;index字段为2时,修改二级缓存及DRAM中相应块的内容,同时发送给除自己之外的一级缓存,表示对某个地址执行了写操作;index字段为3时,从二级缓存发给DRAM要求其刷新相应的缓存块;index字段为4时,修改二级缓存及DRAM中的字,并将该字对应的块传送给发送该消息的源一级缓存;index字段为5时,表示一级缓存未找到某行数据,需要从其它一级缓存中查看是否有该数据。
[0008]优选的技术方案中:每个路由模块中设置有路由表,所述路由表中存储路由模块输出时的路由选择路径。
[0009]优选的技术方案中:每个路由模块维护一个消息队列,每次路由模块采用轮询的方式将输入信号线中的Pkt消息存入消息队列中。
[0010]优选的技术方案中:所述缓存模块采用组相联映射策略和写回方法,替换时随机选择某一缓存行,在缓存块中设置若干指向实际存储信息的缓存行的指针,每个缓存行包含Valid字段、data字段、tag字段和dirty字段;其中Valid字段用于表示该缓存行是否有效;data字段指向存储“字块”的单元;tag字段为标记位,当接收到某个地址之后,比较标记位确认是否与此缓存行匹配;dirty字段判断是否为脏数据,该行数据有没有被写过。
[0011]优选的技术方案中:所述仿真器还包括驱动模块,驱动模块向缓存模块发起读或写操作,并传输其它相关信号。
[0012]优选的技术方案中:所述驱动模块和缓存模块都由时钟发生器控制,驱动模块和缓存模块之间通过5根信号线连接进行信号传输,包括Func信号线、Datajn信号线、Addr信号线、Data_out信号线和Done_Sig信号线;其中Func信号线用以通知缓存模块执行操作;Data_in信号线是提供驱动模块向缓存模块中的某个单元传送写入的数据;Addr信号线用于表示驱动模块想要读/写的地址;Data_out信号线用于驱动模块发送读操作,通过Data_out信号线返回所读单元的数据;D0ne_Sig信号线用于结束一次执行过程。
[0013]本发明利用SystemC的内容今昔跟仿真,SystemC这种编程语言既能描述硬件行为,也可以实现软件,SystemC是C++的宏和库,C++语目是面向对象的,而且现存有许多功能完善的执行代码工具。该仿真器使用QEMU模块进行功能仿真,QEMU仿真器具有高效、支持多种体系结构、动态二进制翻译等特点。最终实现的存储系统分为二级结构,一级缓存为处理器私有,二级缓存为共享。存储系统将通过片上网络与QEMU模块互连形成一个完整的多核计算机系统。QEMU是功能仿真器,用于模拟处理器模块的功能。可以通过在SystemC模块中预留接口,并且在QEMU模块中将部分功能使用SystemC细化,从而将两模块之间共有的SystemC部分连接通信。
[0014]由于QEMU是功能仿真器,本发明将QEMU仿真器中剥离其中的处理器功能模块,添加到该存储系统仿真器中可以形成一个完整的多核计算机系统。该存储系统仿真器具体包括三个模块:缓存模块、路由模块和QEMU模块。
[0015]首先由sc_start()语句启动SystemC的内核作为整个仿真器的驱动内核。然后QEMU模块启动进程,该进程会对底层的存储系统发起读/写某地址中的数据操作。程序运行之时,存储系统会调用各自的构造函数为存储器分配存储空间。当整个系统运行时,模块内部会执行相应的操作,QEMU中的进程执行的操作会通过屏幕显示出来结果,由结果可以看出是否得到所需地址的值。
[0016]相对于现有技术中的方案,本发明的优点是:
[0017]本发明的仿真器能够用来进行目标系统的系统软件开发,使得软硬件开发可以同时进行,加快系统开发速度。多个核心之间的片上网络互连能够缩短核间的互连线,降低核间通信延迟,提高通信效率和数据传输带宽。使用片上网络互连有利于系统的扩展。【专利附图】

【附图说明】
[0018]下面结合附图及实施例对本发明作进一步描述:
[0019]图1是本发明基于片上网络互连的多核存储系统仿真器的互连图
[0020]图2是本发明片上网络互连结构图;
[0021]图3是本发明路由模块的简要示意图;
[0022]图4是缓存模块的结构示意图;
[0023]图5是本发明基于片上网络互连的多核存储系统仿真器qemu模块的通信架构图;
[0024]图6是本发明驱动模块与缓存模块的通信示意图。
【具体实施方式】
[0025]以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规实验中的条件。
[0026]实施例
[0027]本实施例采用一种新的互连方式:片上网络互连方式。多核下的缓存采用分级结构,采用二级缓存结构,一级缓存为各个核心所私有,二级缓存为各个核心所共享;由于一级缓存为多个核所私有,各个核会对同一缓存块中的数据执行不同的操作,所以容易造成数据不一致。
[0028]一、缓存模块
[0029]缓存模块是按照其定义来实现的,采用组相联映射策略、写回方法、替换时随机选择某一缓存行。首先使用一个指针指向Cache Block,这些缓存块中存有许多指针,这些指针指向实际存储信息的单元,该单元被称为缓存行(cache line)。不论是私有缓存还是共享缓存都使用缓存行的方式,只是一级缓存需要考虑一致性问题。
[0030](I)私有缓存
[0031]在多核下缓存的一致性问题存在于私有的一级缓存中。采用MSI (三态写回无效)协议解决该问题,由该协议可知,该协议采用写回高速缓存,减少了传输次数;写无效是指本地高速缓存中的数据被更新后,使其它高速缓存中的相应拷贝无效,下一次由该缓存发起对相同块的写操作不会再对其它一级缓存模块发出通知。该协议将Cache的状态设置为三种:修改过、共享和无效状态。因此在缓存行中需要2位用于表示这三种状态。在多核下,采用消息传输,一级缓存只需两根信号线(输入/输出信号线)直接连接到路由模块,消息的转发在路由模块内部实现。
[0032]SystemC使用SC_CT0R ()表示构造函数,在构造函数内部声明进程,可以初始化进程的敏感表,敏感表是用来指定对进程敏感的信号和端口集。所有需要在模块内部执行的操作都会在进程中实现。
[0033]私有缓存模块的构造函数首先是进行存储空间的分配。在构造函数的参数中可以设定参数用于指定缓存的容量、组相联的路数,然后分配所需的空间。接下来就是定义进程实现模块的功能。在构造函数中包含两个函数:①d0_0perati0n(),该函数对时钟的下降沿敏感,该函数的作用就是接收驱动模块发送的命令,并对缓存执行一系列的操作,主要是控制本地操作d0_CyCle(),该函数对模块的输入信号敏感,当输入信号来临时,表明远程处理器执行了某操作,需要查看本地缓存并根据情况修改其相应的状态位,主要是控制远程操作。远程操作分为如下四种:①本地读本地写远程读;④远程写。
[0034]1.无效I状态
[0035]①本地读操作时,发送消息给其它一级缓存中查看有没有此行数据。若没有,直接从下面的存储器中返回,并将状态由1->S ;如果其它核心中的一级缓存中含有这行数据且状态为修改过M,则首先要写回主存,然后将状态改为共享S,本Cache将数据从内存中取出,本地缓存行状态由I_>S ;若其它缓存中有该数据且状态为S,则直接从下层存储空间取数据,本地缓存行状态由1->s。
[0036]②本地写操作时,从内存中取数据,在Cache中修改,状态由1->M。如果核心的一级缓存中有这份数据的拷贝且状态为修改过M,则要先将数据写回内存。如果其它Cache中有这份数据,贝1J其它Cache的cache line状态变为I。
[0037]③远程读和远程写时,因为本来就是无效状态,所以无影响,从而状态不变。2.共享S状态
[0038]①本地读操作就直接从Cache中提取数据,状态不变。
[0039]②本地写时,修改Cache中的数据,状态变为M。其它缓存中若有该cache
[0040]line,则 cache line 变为 I。
[0041]③远程读时,状态不变。
[0042]④远程写时,由于数据被修改,本cache line含有旧数据,状态变成I。
[0043]3.修改M状态
[0044]①本地读时,直接从Cache中取数据,状态不变。
[0045]②本地写时,修改cache I ine中的数据,状态不变。
[0046]③远程读时,该行数据需要写回内存,其它核心从内存中取得最新数据,状态变为共享S。
[0047]④远程写时,本核心中的数据先写回内存,因为其它核会改变这行数据,所以状态变为无效。
[0048]当某个缓存接收到驱动模块发送的信号后,查找缓存块中是否包含所求地址的块,如果找到且不为无效,直接返回就可以了。如果是无效,则需要发送消息到其它一级缓存模块。如果是远程发送过来的消息,首先查看消息中的地址所在的缓存块是否在该缓存中。如果不在,则不予处理;如果在,则根据外界操作的类型来修改缓存行的状态,修改的方法就是按照前面所述的状态转换过程。同时,如果伴有将数据块送入下层存储系统的操作,不仅需要修改状态,还要将缓存块打包在消息中,传送到下层的存储系统中。
[0049]在缓存模块中,不仅需要定义与驱动模块连接的信号线,而且需要为其缓存行的存储分配空间。
[0050]
【权利要求】
1.一种基于片上网络互连的多核存储系统仿真器,其特征在于所述仿真器以SystemC的内核作为整个仿真器的驱动内核,包括用于仿真各个处理器核心的一级高速缓存的缓存模块、用于仿真各个处理器核心的二级高速缓存的路由模块和用于提供功能仿真的QEMU模块;若干个路由模块互连仿真处理器核心共享的二级高速缓存形成的片上网络,每个路由模块设置有一组与缓存模块连接的信号线;所述路由模块将缓存模块或者路由模块传递的Pkt消息分发到另一缓存模块或者另一路由模块。
2.根据权利要求1所述的基于片上网络互连的多核存储系统仿真器,其特征在于所述pkt消息包括data字段、id字段、dest数组字段、addr字段、cur_addr字段、change_data字段、index字段;其中data字段用于存储消息中的数据;id字段用于表示路由模块的编号;dest数组字段用于表示pkt信息需要发送的目的地;addr字段表示缓存行的地址;cur_addr字段表示缓存行的起始地址;change_data字段表示写操作的数据;index字段为标记字段。
3.根据权利要求2所述的基于片上网络互连的多核存储系统仿真器,其特征在于所述Pkt消息中index字段为O时,表示没有特殊功能;index字段为I时,从二级缓存或DRAM中取块并返回给发送者;index字段为2时,修改二级缓存及DRAM中相应块的内容,同时发送给除自己之外的一级缓存,表示对某个地址执行了写操作;index字段为3时,从二级缓存发给DRAM要求其刷新相应的缓存块;indeX字段为4时,修改二级缓存及DRAM中的字,并将该字对应的块传送给发送该消息的源一级缓存;index字段为5时,表示一级缓存未找到某行数据,需要从其它一级缓存中查看是否有该数据。
4.根据权利要求1所述的基于片上网络互连的多核存储系统仿真器,其特征在于每个路由模块中设置有路由表,所述路由表中存储路由模块输出时的路由选择路径。
5.根据权利要求1所述的基于片上网络互连的多核存储系统仿真器,其特征在于每个路由模块维护一个消息队列,每次路由模块采用轮询的方式将输入信号线中的Pkt消息存入消息队列中。
6.根据权利要求1所述的基于片上网络互连的多核存储系统仿真器,其特征在于所述缓存模块采用组相联映射策略和写回方法,替换时随机选择某一缓存行,在缓存块中设置若干指向实际存储信息的缓存行的指针,每个缓存行包含Valid字段、data字段、tag字段和dirty字段;其中Valid字段用于表示该缓存行是否有效;data字段指向存储“字块”的单元;tag字段为标记位,当接收到某个地址之后,比较标记位确认是否与此缓存行匹配;dirty字段判断是否为脏数据,该行数据有没有被写过。
7.根据权利要求1所述的基于片上网络互连的多核存储系统仿真器,其特征在于所述仿真器还包括驱动模块,驱动模块向缓存模块发起读或写操作,并传输其它相关信号。
8.根据权利要求7所述的基于片上网络互连的多核存储系统仿真器,其特征在所述驱动模块和缓存模块都由时钟发生器控制,驱动模块和缓存模块之间通过5根信号线连接进行信号传输,包括Func信号线、Data_in信号线、Addr信号线、Data_out信号线和Done_sig信号线;其中Func信号线用以通知缓存模块执行操作;Data_in信号线是提供驱动模块向缓存模块中的某个单元传送写入的数据;Addr信号线用于表示驱动模块想要读/写的地址;Data_out信号线用于驱动模块发送读操作,通过Data_out信号线返回所读单元的数据;D0ne_Sig信号线用于结束一次执行过程。
【文档编号】G06F9/455GK103914333SQ201410148038
【公开日】2014年7月9日 申请日期:2014年4月14日 优先权日:2014年4月14日
【发明者】吴俊敏, 崔贤芬, 赵小雨 申请人:中国科学技术大学苏州研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1