片上多核处理器时钟精确并行仿真系统及仿真方法

文档序号:6597856阅读:240来源:国知局
专利名称:片上多核处理器时钟精确并行仿真系统及仿真方法
技术领域
本发明属于信息处理系统处理器的仿真领域,具体的说是一种在共享存储多处理
器机器平台上时钟精确的并行仿真片上多核处理器的技术。
背景技术
计算机体系结构仿真器技术用软件方法在体系结构的层次从时间上仿真计算机系统的行为,是计算机体系结构及软件理论研究者所依赖的重要工具,在学术界和产业界有着广泛的应用。该类型仿真器早期主要的仿真对象是单处理器系统,性能、灵活性、细节程度是衡量该类型仿真器的主要指标。 随着多核时代的来临,该类型仿真器将仿真对象扩展到了多核处理器系统,然而传统的单处理器串行仿真技术在应用到多核系统仿真时遇到了性能瓶颈。串行仿真必须遍历仿真每一个处理器核,并且系统后端的行为也随着核数增加而更加复杂,这导致仿真器运行时间随着核数增加而超线性上升。当仿真对象系统的规模达到上百乃至上千个核时,仿真器的耗时程度将令使用者难以容忍。 多核处理器系统仿真器中各处理器核模块存在内在的并行性,因此使用并行仿真技术是提高性能的有效途径之一。在共享存储机器平台上,使用多线程编程模型,多核仿真器可实现为一条线程仿真一块或多块处理器核,通过多条线程并行的执行以加快仿真速度。但各处理器核模块并不完全独立,它们主要通过共享的二级高速缓存交换数据,各条处理器核仿真线程必须保证彼此交换数据时不会出现因果逻辑错误,即某线程收到其他线程
发送来的数据时,本地时钟不会前进的太快以至于数据过时了。这一问题属于离散事件并行仿真(PDES)的领域,解决方法主要有路障同步协议。 路障同步根据对象系统的特性寻找事件发生时间之间的前瞻量,通过设置路障确保任何两个逻辑处理器之间的本地时间差保持在前瞻量范围内,发送给其他逻辑处理器的事件必然在前瞻量之后的时间点发生,从而避免了因果逻辑错误的产生。所谓前瞻量是某逻辑处理器产生的事件对其他逻辑处理器产生影响所需要经过的最小时间。路障同步以前瞻量为周期把仿真时间划分成了固定的同步间隔。在多核系统仿真中,前瞻量一般是二级高速缓存的访问延迟,只有大约10个时钟周期,这严重限制了仿真线程的并发程度。
路障同步技术把二级高速缓存延迟作为前瞻量,在更精细的系统模型中,这种前瞻量会引起因果逻辑错误,其原因有两个方面1、更精细的系统模型需要更细致的互连网络,互连网络是数据的交流通道,同时受多个处理器核的影响,但其传输延迟只有一、二个时钟周期,小于二级缓存的延迟,无法利用前瞻量并行化仿真;2、从低层高速缓存返回的反馈数据必须通过互连网络传输给处理器核,受互连网络串行仿真的限制,高速缓存一致性协议产生的返回事件仍然无法利用前瞻量。 另外,互连网络承担了繁重的数据传输任务,如果完全串行化仿真,可能成为性能中的一个瓶颈。功能仿真子系统嵌入在系统前端仿真模块中与之一起被并行化,这导致工作负载中共享变量的竞争性访问,可能引起逻辑死锁使得仿真器停止运行。而且并行仿真器软件存在大量的共享变量及动态分配的变量。共享变量的并行写会产生数据竞争;不同线程交叉分配动态变量可能造成假共享,两者都会严重降低仿真器的性能。

发明内容
本发明目的在于提供一种片上多核处理器时钟精确并行仿真系统,解决了现有技术中并行仿真器带来的因果逻辑错误、对共享变量的竞争性访问导致的逻辑死锁以及不同线程交叉分配动态变量造成假共享等问题。 为了解决现有技术中的这些问题,本发明提供的技术方案是 —种片上多核处理器时钟精确并行仿真系统,包括初始化仿真系统的管理线程,所述管理线程根据仿真对象系统的核心数目或用户指定的参数创建核线程,其特征在于所述管理线程接受核线程发送的访问数据事件并设置作用于核线程的悬挂路障,当最小本地时钟的核线程到达预定时钟周期未接受到数据时,核线程移动悬挂路障同步前进形成滑动仿真时间窗口。 优选的,所述核线程仿真一个或多个处理器核及私有一级高速缓存、一级高速缓存到二级高速缓存的点对点连接通道,所述管理线程仿真二级高速缓存、主存、低层互连网络。 优选的,所述系统设置有相互分离的功能仿真模块、时序仿真模块,所述功能仿真模块完成工作负载的功能性仿真并驱动时序仿真模块前进,所述时序仿真模块完成工作负载在对象系统上运行的性能仿真,记录各种系统状态。 优选的,所述功能仿真模块还包括工作负载存储空间的共享变量访问控制模块,所述工作负载存储空间的共享变量访问控制模块识别设置在工作负载源代码的同步原语前后的注释指令,并控制核线程互斥访问同步原语间的共享变量。 本发明的另一目的在于提供一种片上多核处理器时钟精确并行仿真方法,其特征
在于所述方法包括当核线程发生二级高速缓存访问请求时,包括以下步骤 (1)管理线程为核线程创建一个带有反馈数据预测返回时间戳的悬挂路障; (2)核线程的本地时钟到达悬挂路障的时间戳却没有收到反馈数据时,停止本地
时钟的前进; (3)访问请求必须由更低级高速缓存或远地高速缓存满足时,管理线程更新悬挂路障的时间戳为新的数据预测返回时间,核线程可继续前进到新的时间戳形成滑动仿真时间窗口 ; (4)当核线程收到反馈数据后,仿真器清除悬挂路障。 优选的,所述方法中核线程仿真一个或多个处理器核及私有一级高速缓存、一级高速缓存到二级高速缓存的点对点连接通道,所述管理线程仿真二级高速缓存、主存、低层互连网络。 优选的,所述方法还包括通过线程局部存储私有化全局变量消除数据竞争的步骤。 优选的,所述方法还包括使用线程私有动态空间分配库分配动态变量消除不同线程私有变量的交叉分配引起的假共享的步骤。 优选的,所述方法还包括在工作负载源代码的同步原语前后插入注释指令,仿真
4模块根据注释指令识别出同步原语指令段,并控制核线程互斥访问同步原语间的共享变 本发明的核心在于,管理线程与需要访问二级高速缓存的核线程之间通过悬挂路 障同步消除可能产生的因果逻辑错误,并通过滑动仿真时间窗口降低悬挂路障的同步开 销。另外,为提高仿真性能,本发明的多核仿真器使用功能仿真与时序仿真分离的策略,其 特点是功能仿真模块完成工作负载的功能性仿真并驱动时序仿真模块前进,时序仿真模块 完成工作负载在对象系统上运行的性能仿真,记录各种系统状态。 本发明所实现的并行仿真器的整体架构可以为在共享存储机器平台上使用多线 程编程模型搭建的多核处理器并行仿真器。所有仿真线程分为两类处理器核线程与管理 线程,每条核线程仿真一块或多块处理器核及私有一级高速缓存并以本地时钟前进,唯一 的管理线程仿真其他系统后端并以全局时钟前进,全局时钟与所有核线程中最慢的局部时 间保持一致。所有核线程通过管理线程交流信息,并使用基于路障同步技术的悬挂路障方 法保持线程间的同步,同步只发生在核线程与管理线程之间。应理解,该仿真器架构是本发 明的应用实例而本发明不限于此实例的范围,叙述该架构是为了辅助说明下列技术方案。
本发明的悬挂路障同步方法以路障同步技术为基础,在同步周期内插入作用于核 线程的路障以保证不会出现因果逻辑错误,其步骤包括 A、当某核线程发生二级高速缓存访问请求时,向管理线程发送相应的事件,管理 线程接收到此事件将其放入调度堆中,并以预测的反馈数据返回时间为时间戳创建悬挂路 障。该次预测默认访问会命中,预测返回时间为全局时钟加上二级高速缓存访问延迟;
B、该源核线程的本地时钟到达悬挂路障的时间戳却没有接收到反馈数据时,停止 本地时钟的前进; C、管理线程从调度堆中取出并处理事件,有两种情况发生 Cl、发现该访问命中时,或接收到远地高速缓存的返回数据时,向源核线程发回返 回数据; C2、发现该访问请求必须由更低级高速缓存或远地高速缓存满足时,产生新的访 问请求,并预测新请求数据的返回时间,更新悬挂路障的时间戳为新的预测返回时间;
D、管理线程发现全局时钟超过悬挂路障的时间戳时,更新悬挂路障的时间戳为全 局时钟; E、源核线程发现悬挂路障更新,恢复仿真,继续前进直到本地时钟到达新的时间 戳; F、源核线程收到返回数据后,向管理线程发回确认消息,管理线程清除悬挂路障; 这时源核线程可能已被阻塞,也可能未到达路障时间戳,无论何种情况,它都会继续前进。 由于源核线程收到返回数据时本地时钟不会超过其时间戳,不再存在因果逻辑错误产生的 可能性。 由于互连网络传输延迟过小,仿真器很难将单一网络划分给不同线程并行仿真,
但多核系统一般存在多层次的网络,其中有些网络的通信活动局部于相关处理器核,例如
一级高速缓存到二级高速缓存的点到点通道,本发明把这种通道划分给相应核线程,以提
高并行化程度;其他处理器核节点之间的互连网络不再划分,由管理线程线性仿真。 由于逻辑死锁是由工作负载同步原语代码中共享变量的并发访问引起的,本发明通过在代码中插入注释指令保护共享变量,具体步骤如下 在测试程序同步原语代码的前后插入注释指令sync—start、 SynC_end,把源文 件编译成可执行文件;核线程仿真到sync—start指令后,功能仿真子系统访问仿真对象工 作空间的变量前必须先获得内存锁;核线程获得内存锁后,访问工作空间的变量,然后释放 锁;核线程仿真到sync—end指令后,可以直接访问工作空间的变量,不再需要获得锁。
共享变量一般来源于全局变量,本发明使用编译器支持的线程局部存储(TLS)技 术私有化全局变量以消除数据竞争;但编译期间的线程局部存储技术无法定义动态分配的 变量,本发明利用dlmalloc库中的私有空间分配技术,为每条线程创建一块私有空间,线 程在私有空间中动态分配变量,消除了交叉分配引起的假共享。
相对于现有技术中的方案,本发明的优点是 本发明的多核处理器并行仿真系统经仿真实验证实,本系统提高多核处理器并行 仿真的精确度及仿真性能。


下面结合附图及实施例对本发明作进一步描述 图1为本发明实施例多核处理器时钟精确并行仿真对象系统的一种体系结构; 图2为本发明实施例多核处理器时钟精确并行仿真系统的一种实现架构; 图3为现有技术中路障同步时细致互连网络及高速缓存一致性协议的仿真过程; 图4为本发明实施例悬挂路障同步的处理过程; 图5为本发明实施例并行仿真器运行多线程负载时的加速比结果; 图6为本发明实施例并行仿真器运行多线程负载时的扩展性结果; 图7为本发明实施例悬挂路障同步与路障同步仿真时间的比值。
具体实施例方式以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明 本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做 进一步调整,未注明的实施条件通常为常规实验中的条件。
实施例多核处理器时钟精确并行仿真器的实现及性能测试 本实施例在使用POSIX多线程编程库并行化Multi2sim-2. 1串行仿真器的基础
上,实现了多核处理器时钟精确并行仿真器。本实施例以主pthread线程作为管理线程初
始化仿真器,完成初始化后,管理线程根据仿真对象系统的核心数目及用户指定的参数创
建多条子线程作为仿真核线程,所有线程并行执行直到测试程序仿真结束。 本实施例仿真对象系统的体系结构如图1所示,仿真对象系统前端是X86超标量
处理器模型,后端是部分共享的存储结构及全局共享的内存控制器。 本实施例并行仿真器的总体架构如图2所示,每条核线程仿真一个或多个处理器 核及私有一级高速缓存、连接通道,管理线程仿真二级高速缓存、主存、低层互连网络等其 他模块。每条核线程拥有两条无锁队列事件接受队列与事件发送队列,接受队列实现管理 线程发送事件给核线程的机制,发送队列实现核线程发送事件给管理线程的机制,核线程 与管理线程间通过悬挂路障方法同步。每条核线程按本地时钟的节拍前进,在每个时钟周期内根据前端模块的状态决定功能仿真子系统完成零或多条指令的仿真,功能仿真促使处 理器流水线的更新,并产生LOAD、 STORE事件以驱动后端运转。系统后端主要由管理线程 仿真,按全局时钟的节拍前进,所有活动由事件机制驱动。系统后端在一定时钟周期后完成 LOAD、 STORE的请求,把反馈数据返回给系统前端使其更新流水线状态。仿真过程中,每条 核线程的本地时钟受外层路障同步路障与内层悬挂路障的共同控制,到达任何一个路障之 后将会被阻塞,全局时钟保持与最慢核线程的本地时钟一致,管理线程根据全局时钟每周 期更新外层路障的时间戳,并可能更新内层悬挂路障的时间戳。 图3说明了路障同步协议在仿真细致的网络模型及高速缓冲一致性协议时产生
因果逻辑错误的一种情况。核线程二在同步周期K发生一级高速缓存缺失,产生二级高速
缓存访问请求,经过网络通道的传输后,把访问到达事件发送给管理线程,这里的网络通道
是私有的,传输事件由核线程仿真;管理线程收到后把该事件放入到调度堆中,然后在全局
时钟达到其时间戳时取出该事件处理,此时它发现二级高速缓存仍然缺失,于是产生三级
高速缓存访问请求事件,该请求将等待二级缓存访问延迟完成,在第K+l个同步周期被处
理,经过网络传输的仿真过程送到三级高速缓存;然后管理线程发现三级缓存访问命中,产
生反馈数据传输事件,该图假设三级高速缓存访问延迟等于前瞻量,因此在第K+2个同步
周期,也就是三级高速缓存访问完成后,反馈数据传输事件才会发生,此次及上一次的传输
网络由于被多个处理器核共享只能被管理线程仿真;传输完成后,管理线程将向核线程二
发回数据到达事件,由于在同一同步周期内核线程前进速度具有不确定性,核线程二的本
地时钟在收到到达事件时可能已经超过了事件的时间戳,从而违反了因果逻辑。 图4说明了悬挂路障是如何阻止因果逻辑错误在第K+2个同步周期产生的。当管
理线程收到二级缓存访问请求时,为核线程二在第K+l个同步周期创建一个悬挂路障,由
于此后很快被更新,该悬挂路障暂时不会阻塞核线程二;随后管理线程发现二级缓存访问
缺失,需要访问三级缓存,于是更新悬挂路障的时间戳,新的时间戳是原值加上三级缓存的
访问延迟及预测的网络传输延迟;其后可能还有数次更新;直到管理线程收到核线程二对
数据到达的事件的确认消息,悬挂路障才会被撤销。这个过程中核线程可能因为本地时钟
到达了悬挂路障的时间戳而被阻塞。如果全局时钟在某时刻到达了悬挂路障的时间戳,由
于全局时钟是最慢的逻辑时钟,核线程必定已经被阻塞,为避免死锁此时管理线程需要把
悬挂路障递增一个时钟周期。 需要说明的是,以上描述虽然未明显提及高速缓存一致性协议,但所述过程中产 生的缓存访问、反馈等事件均由高速缓存一致性协议控制,因此悬挂路障同步解决的是高 速缓存一致性协议中产生的仿真问题。 图3、图4也揭示了本实施例如何对网络模块进行划分。由于二级缓冲命中时,没
有低层网络的传输事件,因此连接一级缓存与二级缓存的网络一般会更加繁忙,把这部分
网络通道划分给各核线程将减轻管理线程的负担,有益于并行度的提高。 本实施例使用gcc支持的嵌入式汇编定义了两个空操作的X86系统调用指令,并
在测试程序源代码的barrier、 mutex等同步原语函数前后插入这两个指令,功能仿真子系
统据此判断是否到达或退出同步原语指令段。如下为避免功能仿真子系统逻辑死锁的注释
指令在本实施例中的一种实现方式。 同步开始的注释指令
7
#define SYNC—BEGIN asm(" movl%0, %%eax\n\t〃 \ 〃 movl% 1, %%ebx\n\t〃 \ 〃 int$0x80\n\t〃 \ : /氺output氺/A :〃 r〃 (325), 〃 r〃 (0) /*input*/\ : 〃 % eax〃 , 〃 % ebx" \ ); 同步结束的注释指令 #define SYNC_END asm(" movl%0, %%eax\n\t〃 \ 〃 movl% 1, %%ebx\n\t〃 \ 〃 int$0x80\n\t〃 \ : /氺output氺/A :" r" (326), " r" (0) /*input*/ \ : 〃 % eax〃 , 〃 % ebx" \ ); 注释指令插入到同步原语前后可以如下 Define (BARRIER,— SYNC_BEGIN pthread_barrier_wait(&($l)); SYNC_END ') 本实施例以dlmalloc库所支持mspace_calloc、mspace_realloc等函数代替了 C 标准库中的calloc、 realloc等分配函数,在核线程初始化之前为每条核线程分配了一块 私有空间,私有空间的粒度为64K,每次私有空间被消耗完之后,dlmalloc库自动为其扩张 64K的空间;核线程初始化及运行过程中所有动态变量的分配都必须指定私有空间,从私 有空间内获取存储块。私有空间的相互隔离基本消除了假共享现象。 如下给出了本实施例如何使用线程私有空间动态分配变量的一种实施方式 for(i = 0 ;i < host_threads_l ;i++)
private—space[i] = create—mspace(0,0); ...... for(i = 0 ;i < host_threads ;i++) { event_procs[i] = mspace—calloc (private—space [i] , 1, sizeof (struct list—t));
list—create (private—space [i] , event—procs [i] , 10); heap—create (private—space [i] , 20, event—he即[i]); r印os—create (private—space [i] , sizeof (struct event_t) , 〃 event—r印os〃 , event—r印os[i]); host—thd[i]. self. event_out_q. pool = mspace—calloc (private—space [i] , eq_len, sizeof (eq_entry));
host—thd[i]. mnger. event_in_q. pool = mspace—calloc (private—space [i] , eq_len, sizeogf (eq_entry));
} 实验环境及实验结果本实施例所用的服务器是曙光天演EP850-GF小型机, 该小型机具体配置如下8颗4核AMD Opteron 83461. 8G HE CPU,32G DDR2ECC内存, 4* 146G SAS硬盘。该服务器运行的操作系统是Li皿xDebain(X86-64)。实验以一条核 线程仿真两块前端模块,工作负载为Splash2多线程测试集中的8个代表性程序FFT、 LU-丽-contig丽s、 LU-contig丽s、 RADIX、 CH0LESKY、 WATER-spatial、 WATER-nsquared、 0CEAN-contiguous。图5给出了该仿真器运行上述工作负载时相对于串行仿真器的加速 比,可以看出,该仿真器达到了较高的加速比,创建4条核线程仿真时达到平均3. 48的加速 比,创建8条核线程仿真时达到平均5. 63倍的加速比,创建16条核线程仿真时达到平均 8. 66倍的加速比。但平均加速比掩盖了测试程序之间的差异,不能以此衡量仿真器的扩展 性。从图6每项测试程序在不同核线程数下的加速比折线可以看出,单项测试程序随着核 线程增加时表现出合理的扩展性。 图7给出了使用悬挂路障同步的仿真器相对于使用纯粹路障同步机制的仿真器 仿真时间的比值,可以看出,悬挂路障同步并没有明显降低路障同步技术的性能,两者表现 出的差异是由并行仿真内在的不确性形成的。 综上所述,本实施例说明本发明能够有效解决多核处理器系统并行仿真中细致互 连网络及高速缓存一致性协议的仿真问题,并保持了较高的性能与合理的扩展性。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是 能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精
神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
权利要求
一种片上多核处理器时钟精确并行仿真系统,包括初始化仿真系统的管理线程,所述管理线程根据仿真对象系统的核心数目或用户指定的参数创建核线程,其特征在于所述管理线程接受核线程发送的访问数据事件并设置作用于核线程的悬挂路障,当最小本地时钟的核线程到达预定时钟周期未接受到数据时,核线程移动悬挂路障同步前进形成滑动仿真时间窗口。
2. 根据权利要求1所述的片上多核处理器时钟精确并行仿真系统,其特征在于所述核线程仿真一个或多个处理器核及私有一级高速缓存、一级高速缓存到二级高速缓存的点对点连接通道,所述管理线程仿真二级高速缓存、主存、低层互连网络。
3. 根据权利要求1所述的片上多核处理器时钟精确并行仿真系统,其特征在于所述系统设置有相互分离的功能仿真模块、时序仿真模块,所述功能仿真模块完成工作负载的功能性仿真并驱动时序仿真模块前进,所述时序仿真模块完成工作负载在对象系统上运行的性能仿真,记录各种系统状态。
4. 根据权利要求3所述的片上多核处理器时钟精确并行仿真系统,其特征在于所述功能仿真模块还包括工作负载存储空间的共享变量访问控制模块,所述工作负载存储空间的共享变量访问控制模块识别设置在工作负载源代码的同步原语前后的注释指令,并控制核线程互斥访问同步原语间的共享变量。
5. —种片上多核处理器时钟精确并行仿真方法,其特征在于所述方法包括当核线程发生二级高速缓存访问请求时,包括以下步骤(1) 管理线程为核线程创建一个带有反馈数据预测返回时间戳的悬挂路障;(2) 核线程的本地时钟到达悬挂路障的时间戳却没有收到反馈数据时,停止本地时钟的前进;(3) 访问请求必须由更低级高速缓存或远地高速缓存满足时,管理线程更新悬挂路障的时间戳为新的数据预测返回时间,核线程可继续前进到新的时间戳形成滑动仿真时间窗□;(4) 当核线程收到反馈数据后,仿真器清除悬挂路障。
6. 根据权利要求5所述的方法,其特征在于所述方法中核线程仿真一个或多个处理器核及私有一级高速缓存、一级高速缓存到二级高速缓存的点对点连接通道,所述管理线程仿真二级高速缓存、主存、低层互连网络。
7. 根据权利要求5所述的方法,其特征在于所述方法还包括通过线程局部存储私有化全局变量消除数据竞争的步骤。
8. 根据权利要求5所述的方法,其特征在于所述方法还包括使用线程私有动态空间分配库分配动态变量消除不同线程私有变量的交叉分配引起的假共享的步骤。
全文摘要
本发明公开了一种片上多核处理器时钟精确并行仿真系统及其方法,所述系统包括初始化仿真系统的管理线程,所述管理线程根据仿真对象系统的核心数目或用户指定的参数创建核线程,其特征在于所述管理线程接受核线程发送的访问数据事件并设置作用于核线程的悬挂路障,当最小本地时钟的核线程到达预定时钟周期未接受到数据时,核线程移动悬挂路障同步前进形成滑动仿真时间窗口。经仿真实验证实,本系统大大提高了多核处理器并行仿真的精确度及仿真性能。
文档编号G06F9/455GK101788919SQ201010104449
公开日2010年7月28日 申请日期2010年1月29日 优先权日2010年1月29日
发明者吴俊敏, 唐轶轩, 尹巍, 朱小东, 赵小雨, 隋秀峰 申请人:中国科学技术大学苏州研究院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1