单芯片多处理器结构模拟系统的制作方法

文档序号:6516102阅读:193来源:国知局
专利名称:单芯片多处理器结构模拟系统的制作方法
技术领域
本发明属于计算机模拟与仿真技术领域,特别涉及可扩展的单芯片多处理器系统的模拟与评测。
背景技术
衡量一个微处理器性能指标的关键指标包括主频、功耗和通信速度。为了使处理器达到功耗和性能完美匹配的新高度,方法之一是采用多线程技术,即在处理器中同时执行多个独立的指令序列的方法,增加单位时间内处理器的资源利用率。单芯片多处理器(CMP-Chip Multi-Processor)结构正是基于这一思想而提出,即在芯片内部集成了多个处理器内核,将每一个线程平滑地分配到每个处理内核中,从而提高微处理器在单位时间内任务的吞吐量。由于CMP系统结构微处理器具有控制逻辑简单、工作主频高和处理器间通信延迟很低的特点,这使得它已经成为当前提高微处理器性能的有效途径,必将广泛的应用于嵌入式处理系统和高性能计算领域。目前,国外多家科研机构和公司都广泛地研究单芯片多处理器项目,此类研究是系统结构研究的热点。但是,目前对于如何对现有处理器内核进行剪裁(内容包括指令集的改进、cache结构的调整、全局异常处理机制的处理等),使之成为自治的、又保持相互协同的多处理器内核,以适应实际应用功能,从而在最大限度上改进处理器系统的性能上,还缺乏相应的研究。
上述问题的根本原因在于未能从系统的角度来评价CMP的性能指标。CMP系统结构本身具有很强的特殊性当前用于评价微处理器性能的标准测试程序,由于无法正确评估多个处理器内核的性能并无法适用于评测CMP的性能指标;类似原因,基于多处理器结构的评测机制由于和CMP的系统瓶颈——通信延迟不同(前者为处理器之间,后者为处理器和外部设备之间),也无法正确地衡量其性能指标。因此,必须制定基准评测标准,建立相应的评测机制,才能够正确地评价CMP系统结构的优势和适用范围。
在微处理器体系结构的设计与实现技术中,软件模拟方法是解决上述问题的最主要、也是最有效的方法。设计出一个高可配置、可复用的软件模拟系统,可以大大缩短硬件设计和相应的调试软件开发的时间,并为体系结构的决策提供快速验证和评价。模拟系统设计的技术中,一方面要求移植性好,可以为不同的指令集、不同的流水线结构提供统一的框架;另一方面要求具有高的模拟性能和效率。对于单芯片多处理器系统——这种采用线程级并行的粗粒度并行系统,可扩展性也是需要着重考虑的问题。
由于单芯片多处理器要求具有可扩展性好、自动生成能力强和灵活性好的特点,大多数单芯片多处理器的模拟系统对此还或多或少存在缺陷,比如维斯康星大学研发的simplemp、加州大学圣地亚哥分校研发的simsmt,都没有部件信号级精确的模拟机制和精确中断的模拟机制;也没有部件级的可复用机制,从而在流水线发生变化的时候,整个系统的灵活性较差。再比如对于通用的微处理器设计来说,高速缓存的设计是至关重要的,而对于不同的应用需要不同的配置才能做到最好的性能价格比,那么在何种情况下如何配置高速缓存是单芯片多处理器所要直接面临的问题;另外,不同的应用对于微处理器计算能力的要求也有较大差距,但是由于单芯片多处理器处理模型差别不大,因此单芯片多处理器中选用何种处理器内核以及采用多少内核是合理而有效的,就需要一个能够快速生成不同处理器类型及其个数的、灵活的、可配置的模拟系统来进行测试和衡量。

发明内容
本发明针对单芯片多处理器的行为模拟和性能评测问题,提出一种单芯片多处理器结构模拟系统(英文简称SimCMP),它将微处理器中各类信号、部件一一映射到软件系统中的对象和方法之中,同时在设计过程中,为了适应可移植性、多人协同开发调试的设计需求,定义了具有一致性规范的、面向部件的实现方法,具有高可配置性和可移植性好的特点,使整个软件系统具有良好的模块化、可读性和移植性。本发明可以大大缩短硬件设计和软件开发的时间,并为体系结构的决策提供快速验证和评价。
本发明提出的一种单芯片多处理器结构模拟系统,其特征在于,主要包括总控模块;用于构建CMP系统结构框架;预处理模块用于生成用户希望生成的CMP中各种信号和定义;内核生成模块用于生成CMP系统框架中的微处理器内核;测试验证模块用于各种测试方式的设置;由CMP系统结构框架与测试验证报告组成的输出模块用于根据用户定义定制生成单芯片多处理器的系统结构框架,以及根据用户的测试用例产生测试报告;各模块的连接关系为该总控模块分别与预处理模块、内核生成模块、测试验证模块相连,该预处理模块同时与内核生成模块和测试验证模块相连,该内核生成模块与输出模块的CMP系统结构框架相连,该测试验证模块与输出模块的测试验证报告相连。
本发明的特点及技术效果本发明提出的一种单芯片多处理器结构模拟系统(即单芯片多处理器结构模拟系统,英文简称SimCMP),它将微处理器中各类信号、部件一一映射到软件系统中的对象和方法之中,同时在设计过程中,为了适应可移植性、多人协同开发调试的设计需求,定义了具有一致性规范的、面向部件的实现方法,具有高可配置性和可移植性好的特点,使整个系统具有良好的模块化、可读性和移植性。在它的实现中采用了可自扩展、可配置、可复用的设计模式。同时,为了实现模拟硬件部件的并行运行,还分别提出了模拟系统定义方法和部件更新方法来保证模拟硬件执行正确性的前提下,获得比较高的执行效率,其中,模拟系统定义方法是面向部件、系统结构无关的,部件更新方法则采用了事件驱动的方法。
利用该模拟框架可以方便的编写、实现和扩展单芯片多处理器的系统结构框架并对其进行性能评测。
本发明系统在Windows操作系统的微机或工作站上采用Visual C++环境中开发,充分利用面向对象的软件设计方法实现。其主要的创新点如下1)采用良好的框架结构,对微处理器内核的定义非常方便,可扩展性好;2)使用事件驱动的部件更新方法,保证系统的效率和可靠性;3)对系统内各个内核结构,相同或相似的地方只需定义一次,程序框架可以通过配置自动生成其他的内核部件和信号;4)微处理器间的通信机制可以灵活定义和修改,可以通过存储结构(不同级别的存储结构共享)或中断机制实现。可以方便的实现系统的扩展以及对操作系统或一般监控程序的支持。


图1为本发明的系统总体结构框图。
图2为本发明的系统工作流程框图。
图3为本发明提出的部件分组方法。
图4为本发明提出的周期信号更新方法。
图5为本发明的测试验证操作界面图。
图6为利用本发明生成的具有两个处理器内核的单芯片多处理器的系统结构图。
具体实施例方式
本发明提出的单芯片多处理器结构模拟系统结合附图及实施例进一步说明如下本发明的模拟系统主要包括总控模块、预处理模块、内核生成模块、测试验证模块和由CMP系统结构框架与测试验证报告组成的输出模块五个部分,如图1所示,各模块的连接关系为该总控模块分别与预处理模块、内核生成模块、测试验证模块相连,该预处理模块同时与内核生成模块和测试验证模块相连,该内核生成模块与输出模块的CMP系统结构框架相连,该测试验证模块与输出模块的测试验证报告相连。
本发明的模拟系统的工作流程如图2所示。包括以下步骤(1)加载指令和程序块,建立虚拟接口和外围部件,以构建基本微处理器系统结构;(2)定义并生成CMP中的微处理内核及其连接关系;(3)对系统状态进行初始化包括程序的初始化,部件的初始化和CPU初始状态赋值;(4)预处理定义并实现各个部件及相关信号;(5)判断是否需要进行测试验证,若是,则加载测试验证程序,获得测试验证报告,并判断是否满足用户的设计要求;(6)若不需要测试验证,则直接判断是否满足用户设计要求,若否则修订系统结构定义后返回进行第(2)步骤;(7)若满足要求,将已定义好的CMP系统结构框架描述写入文件并保存,完成CMP系统结构框架定义。
实现上述工作流程的模拟系统中各模块的功能及具体实现实施例详细说明如下总控模块总控模块自始至终贯穿于本发明的工作流程之中,负责构建CMP系统结构框架。具体包括的功能有(1)控制系统加载的指令序列或程序块,该功能的实现是通过打开包含指令序列和程序块文件完成的;(2)完成上述整个工作程序的初始化,该功能只要是通过对各个部件进行的初始化和CPU初始状态的赋值,参数值为固定的缺省默认值;(3)虚拟接口建立和外围部件模拟实现,该功能通过调用缺省的程序接口实现,程序接口存放在数据库中可以直接调用;(4)负责完成验证程序或指令序列的加载过程,该功能实现过程是利用可视化界面,通过打开包含指令序列和程序块文件完成的;(5)控制单芯片多处理器结构的生成和测试验证过程,该功能实现是通过在程序中插入断点完成的。
预处理模块负责将单芯片处理器内部的部件与信号同单芯片处理器核外部的部件与信号分开定义,用户只需要在可视化的用户接口模块进行定义,就可以通过预处理模块生成用户希望生成的CMP中各种信号和定义,这在避免重复劳动的同时,最大限度的提供灵活性。
在设计流水线结构不同的微处理器体系结构时,包括对指令集进行改变的时候,软件模拟系统的框架都不需要做更改,只需更改相关的部件定义、信号定义,即可通过运行预处理程序将修改的定义。
在预处理模块中,对各个部件的定义方式的具体实施例如下
对单芯片微处理器核内的部件来说,只要是所有的处理器含有的相同部件,定义采用.DEF文件进行,由预编译程序在编译前生成每个微处理器内核,其主要的目的是方便修改和统一定义的格式。而且定义的格式与硬件描述语言类似,从而能够方便地实现从软件模拟系统到硬件描述语言的移植。部件的定义包括component、variable和Execute三个域,定义的格式如下component域包含五个子域,NAME,TYPE,INPUT,OUTPUT,CORETYPENAME子域表示该部件的名称;TYPE子域表示该部件的类型,包括组合逻辑(combination)、时序逻辑(sequence);输入输出部分以INPUT和OUTPUT标明,所有的信号或者是输入信号,或者是输出信号;所有的输入信号以INPUT为标志标明,格式为INPUT=信号名所有的输出信号以OUTPUT为标志标明,格式为OUTPUT=信号名所有部件的内核属性用CORETYPE定义,格式为CORETYPE=内核属性表示了一个部件的内核属性——属于一个特定的处理器还是属于所有处理器的相同部件。
Variable域主要定义该部件所使用的变量,定义的语法同程序设计语言C++的语法。
Execute域定义在CPU运行的时候,部件被执行时的逻辑行为,即每个周期该部件需要完成的任务。
以定义最简单的CLZO部件为例CLZO部件的功能是计算一个word中开头部分的0或1的个数,部件的名字即“CLZO”。部件的输入输出信号有三个,一个是操作数,一个是控制信号,一个是输出结果。部件的类型为组合逻辑型。该部件在一个周期内完成的工作是按照控制型号的指示(指明计算前导1还是前导0),计算操作数的前导1/0的个数,然后置输出结果。
内核生成模块负责生成CMP系统框架中的微处理器内核,用户可以选择生成指定的微处理器内核,也可以通过定制生成具有特殊功能的微处理内核。内核生成模块包含两个子数据库微处理器内核库和特殊部件库。这样利用本发明可以根据用户的需求定制要生成单芯片多处理器所包含的处理器内核。
该内核生成模块在模拟不同的单芯片微内核个数和不同的流水线结构时,用户可以定制的如下六个方面内容(1)单芯片微处理器内核的个数;(2)微处理器内核中部件的内核属性;(3)特殊微处理器内核的特有部件;(4)流水线的控制部分和指令译码的结果;(5)单芯片多处理器内核外的部件及信号信息;(6)单芯片多处理器各个内核之间的连接、通信方式。
当用户确定了所需要的微处理器内核后,本发明的内核生成模块通过模拟系统定义方法和部件更新方法来实现模拟硬件部件的并行运行,同时,还保证模拟硬件执行正确性的前提下,获得比较高的执行效率。其中,模拟系统定义方法是面向部件、系统结构无关的,部件更新方法则采用了事件驱动的方法。该方法的原理是只更新存在输入变化的一系列部件,输入在一个时钟周期内没有变化的部件则不执行运算更新,这使得执行的效率大大提高。同时部件的执行先后关系由该方法自动排序,不需要在体系结构的定义时人为指定,从而减小了模拟系统逻辑设计的工作量,这同时也做到了不会产生“循环”影响电路的校验。
本发明的采用的模拟系统定义方法和部件更新方法,它们的实施例分别是部件分组方法和周期信号更新方法。
每个流水线节拍部件更新方法,即模拟CPU运行一个节拍的部件分组方法实施例如流程图3所示,包括以下步骤(1)生成一个中止信号列表ListEnd;(2)检查所有部件的输出是否已在列表中;(3)如果在列表中,检查下一个部件,否则,将不见加入到组0,其信号加入中止列表;(4)如果已经遍历了所有部件,进入到下一步,否则,转入第二步;(5)检查是否还有剩余部件;(6)如果没有剩余部件,则结束;否则,增加组好,将所有部件的输出信号加入ListEnd,输出信号是前组不见输入信号的加入当前组,结束。
周期信号更新方法实施例如流程图4所示,工作流程如下(1)找到所有在节拍内改变的信号;(2)找到节拍内改变的信号所影响的部件,并加入到执行列表;(3)按照组号的顺序依次处理各组中的部件;(4)判断所有锁存器是否有stop或clear信号有效;(5)如果有效,保留原值或清空信号,否则,更新锁存器,结束。
测试验证模块负责各种测试方式的设置需要跟踪的部件(高速缓存、寄存器、TLB)的类型、内容等信息。测试验证的操作界面如图5所示,界面中包含两个微处理器内核,界面中各个部件的功能如下(下面根据图中标号顺序描述)1.打开一个CMP系统结构框架;2.根据用户需求显示CMP系统结构框架运行状态信息;3.在线帮助文件系统,提供帮助信息;4.测试单个微处理器内核;5.微处理器内核一次运行包含多条指令的指令流;6.测试CMP系统结构框架;7.测试单个微处理器内核的快捷键按钮;8.设置单步跟踪的快捷键按钮;9.设置程序运行断点的快捷键按钮;10.显示CMP系统结构框架中一个微处理器内核的寄存器当前信息;11.显示CMP系统结构框架中一个微处理器内核的信号状态信息;12.显示显示CMP系统结构框架中一个微处理器内核的段寄存器信息;13.显示内存状态信息;14.显示CMP系统结构框架中另一个微处理器内核的段寄存器信息;15.显示CMP系统结构框架中另一个微处理器内核的信号状态信息;16.显示CMP系统结构框架中另一个微处理器内核的寄存器当前信息;17.打开一个CMP系统结构框架的快捷键按钮。
通过友好的可视化界面,向用户提供了一个自动可配置的用户接口。在运行的过程中可以通过该界面方便的看到微处理器执行的每个周期内所有部件、信号的状态,可以通过设置断点、修改内存、寄存器或其它数据、控制信号对程序进行调试。程序执行完毕后,可以得到相应的性能参数和寄存器、Cache、主存、TLB的跟踪文件。测试验证模块实施例具体的工作流程如下(1)调入一个CMP系统结构框架;(2)调入一个测试程序;(3)设置调试、跟踪的步长,缺省步长为1;(4)程序开始运行,调试、跟踪CMP系统运行状态信息;(5)通过可视化界面设置、修改内存、Cache、寄存器、TLB的信息,观察系统运行状态;(6)系统自动记录用户的调试信息;(7)程序运行完毕。
测试验证模块的实现是通过实时操作完成的,当用户设置命令后,在总控制模块的控制下,当系统结构框架运行到满足用户设定的位置时,测试验证模块通过在框架中设置断点,使得程序可以暂停,并将相应的中间结果反映到操作界面中,供用户调试使用。
输出模块包括CMP系统结构框架和测试验证报告。其中,CMP系统结构框架是根据用户定义定制生成的单芯片多处理器的系统结构框架,在系统结构框架的生成过程中,本发明的模拟系统根据与用户的交互,将加以确认的部件程序写入文件中,例如当用户选择了一个微处理器内核时,模拟系统自动从数据库中提取该内核的程序代码,并将其写入系统结构框架文件中;测试验证报告则是在上述系统结构框架基础上,根据用户的测试用例产生测试报告,该测试报告由本发明的测试验证模块自动生成日志文件,日志文件的生成是基于在如图5、根据用户的命令,由系统自动将测试命令、系统结构框架在运行中的中间状态结构、最终运行结果依次写入到文件中实现的,该测试报告用以评价所生成的CMP系统结构的优劣。
本发明提出的单芯片多处理器结构模拟系统的应用举例说明如下图6是一个具有两个处理器内核的单芯片多处理器的系统结构图,该单芯片多处理器系统框架由本发明提出的单芯片多处理器结构模拟器生成。
以图6具有两个内核的单芯片多处理器为例,通过设置不同核心的起始地址(在模拟系统中),说明采用单芯片多处理器结构模拟系统可以获得的系统性能提升。其中,Quick应用程序使用了维度为16的一维数组进行快速排序;EightQueen应用程序实现了经典的八皇后问题求解;Hanoi应用程序实现了汉诺塔问题求解。


表中核心标示为A时表示核心A跑应用程序,核心B不动;反之亦然。
权利要求
1.一种单芯片多处理器结构模拟系统,其特征在于,主要包括总控模块;用于构建CMP系统结构框架;预处理模块用于生成用户希望生成的CMP中各种信号和定义;内核生成模块用于生成CMP系统框架中的微处理器内核;测试验证模块用于各种测试方式的设置;由CMP系统结构框架与测试验证报告组成的输出模块用于根据用户定义定制生成单芯片多处理器的系统结构框架,以及根据用户的测试用例产生测试报告;各模块的连接关系为该总控模块分别与预处理模块、内核生成模块、测试验证模块相连,该预处理模块同时与内核生成模块和测试验证模块相连,该内核生成模块与输出模块的CMP系统结构框架相连,该测试验证模块与输出模块的测试验证报告相连。
全文摘要
本发明涉及一种单芯片多处理器结构模拟系统,属于计算机模拟与仿真技术领域,该系统,主要包括总控模块、预处理模块、内核生成模块、测试验证模块和由CMP系统结构框架与测试验证报告组成的输出模块五个部分,各模块的连接关系为该总控模块分别与预处理模块、内核生成模块、测试验证模块相连,该预处理模块同时与内核生成模块和测试验证模块相连,该内核生成模块与输出模块的CMP系统结构框架相连,该测试验证模块与输出模块的测试验证报告相连。本发明具有高可配置性和可移植性好的特点,使整个软件系统具有良好的模块化、可读性和移植性。本发明可以大大缩短硬件设计和软件开发的时间,并为体系结构的决策提供快速验证和评价。
文档编号G06F11/36GK1645338SQ20051000872
公开日2005年7月27日 申请日期2005年2月25日 优先权日2005年2月25日
发明者姚文斌, 汪东升, 郭松柳, 鞠大鹏, 陈建党, 顾瑜 申请人:清华大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1