多线程交叉双精度短向量结构的评测激励自动构造方法

文档序号:6437359阅读:137来源:国知局
专利名称:多线程交叉双精度短向量结构的评测激励自动构造方法
技术领域
本发明涉及处理器领域和评测领域,尤其涉及一种面向多线程交叉双精度短向量结构处理器的评测激励自动构造方法。
背景技术
随着处理器芯片的集成度越来越大,在处理器内核中实现双精度短向量部件来支持数据密集的科学和工程计算是一个重要的发展趋势。在多线程处理器内核中扩展双精度短向量部件可以大幅度提高处理器的双精度浮点计算能力。双精度短向量部件需要实现更长字长的短向量寄存器(目前htel的AVX已经支持256位共4路双精度数据的短向量), 并且需要实现相应的支持双精度计算的向量操作指令集。
如图1所示,为一扩展了双精度短向量部件的多线程处理器内核结构示意图。该处理器内核基于OpenSparc T2实现,在处理器内核中扩展了向量处理单元(VPU),支持4路双精度数据的短向量操作,多个线程可并发使用。该处理器内核采用轮转多线程的方式支持8个硬件线程,每4个硬件线程为一组;每个时钟周期,处理器从每组4个线程中选择一个线程的当前指令执行,该指令可以是向量指令也可以是标量指令,当某个线程的指令由于高速缓存失效等原因引发流水线阻塞时,多线程交叉向量结构的微处理器将从其他线程取指执行,从而隐藏延迟,保证充满流水线。如图1所示,处理器内核各个功能单元的功能简述如下1)自陷逻辑单元(TLU),用于更新机器状态、处理异常和中断。面向处理器扩展的VPU, TLU也进行了相应的扩展,支持VPU的状态更新和异常处理。
2)取指令单元(IFU),每个时钟周期从每组线程中取一条指令,根据指令的类型发射到相应的执行单元(EXU0/1、FGU、LSU、VPU)执行。
3)整数执行单元(EXU0/1),负责执行整数操作类指令。该处理器包含两个整数执行单元(分别标记为0号和1号),每4个线程共享一个整数执行单元。
4)浮点和图形单元(FGU),负责执行标量浮点操作指令和支持图像处理的指令。
5)取/存单元(LSU),负责所有访存指令的执行。
6)存储器管理单元(MMU),负责配合LSU单元完成存储访问时的地址转换、内存管理。
7)向量操作单元(VPU),负责执行实现4路双精度数据运算的短向量指令。
8)通信单元(Gasket),负责处理器内核与第2级高速缓存或其他处理器核的通
为了实现多线程交叉双精度短向量处理器,在原有的处理器内核的基础上实现了 VPU单元。而为了和VPU单元的功能相配合,TLU、IFU、LSU、MMU都进行了扩展以支持双精度短向量操作。和处理器内核结构的改进相对应,多线程交叉双精度短向量结构的处理器实现了短向量操作指令集,包括向量存取指令、向量计算指令、向量比较指令、向量移位指令、 状态操作指令等。
上述增加了向量处理单元(VPU)的处理器内核最多支持8个硬件线程,多线程并发使用VPU部件就构成了多线程交叉双精度短向量体系结构。使用向量单元的每个线程的指令流中包含多种类型的指令,在此处理器上,指令执行的过程如下IFU每个时钟周期从8个硬件线程的当前指令中取得来自两个线程的两条指令,它根据指令的类型决定将指令发送到哪个功能单元去执行,如果是两条都是整数运算指令可以同时分别发到两个整数执行单元;如果两条都是访存指令、向量浮点运算指令、标量浮点运算指令,则先发出其中一条,下个时钟周期再发送另外一条。当多个使用VPU单元的线程同时在处理器中执行时,来自不同线程的向量存取指令、向量计算指令同时在LSU、VPU上执行。
这种多线程交叉双精度短向量结构可以隐藏长延时指令的延迟,提高处理器的整体性能。
双精度短向量单元和传统面向流媒体计算的SIMD扩展相比,使用的寄存器不同、 数据通路不同、指令集也完全不同;因此在此类结构体系的处理器验证、性能评估过程中, 都需要编写大量的评测激励。在处理器验证和性能评估中使用的评测激励是面向处理器体系结构的汇编语言程序。在处理器验证过程中,将测试激励加载到处理器的测试平台上运行,可以验证处理器设计的正确性;并且,可以根据测试激励的执行时间和激励程序中所包含的计算量评估处理器的性能。在处理器的验证、性能评估过程中,都需要编写大量的作为评测激励的汇编语言程序,通常这些程序都是由研发、测试人员手工编写,工作量大,耗费时间长。由于不同处理器指令集体系结构不同、短向量扩展方法不同,因此无法继承和重用已有的面向多线程使用短向量处理功能单元的评测激励。发明内容
本发明所要解决的技术问题是针对现有技术存在的问题,本发明提供一种使用方便、可减少人员工作量、且能缩短耗费时长的多线程交叉双精度短向量结构的评测激励自动构造方法。
为解决上述技术问题,本发明采用以下技术方案一种多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于包括以下步骤(1)输入待评测的向量操作类型和向量长度;(2)自动创建一内容为空的用作评测激励的汇编语言文件;(3)向所述汇编语言文件中写入如下内容 (3.1)多线程运行初始化代码段;(3. 2)评测激励控制结构,包括启动多线程执行模式的代码段,用于设置多线程使能寄存器使处理器进入多线程工作状态;线程选择并跳转的代码段,用于读取各个线程私有的线程号寄存器并根据线程号跳转到各个线程;(3. 3)多线程向量操作程序段,包括主线程向量操作代码段,用于各线程计算任务分配、操作数的首地址和向量长度计算、读取源操作数向量和目的操作数向量并循环进行短向量运算操作;从线程向量操作代码段,用于读取源操作数向量和目的操作数向量并进行短向量运算操作;(3. 4)评测激励同步结构,包括主线程同步代码段,用于判断并等待所有线程完成向量操作;从线程同步代码段,用于向主线程标识本线程是否完成向量操作;(3. 5)数据段以及数据段初始化语句,所述数据段为多线程共享数据段,所述多线程共享数据段含有多线程共享的源操作数向量和目的操作数向量;(4)将步骤(3)得到的汇编语言文件作为自动生成的多线程交叉双精度短向量结构的评测激励。
作为本发明的进一步改进所述步骤(3. 3)中,所述多线程向量操作程序段的创建步骤如下 (3. 3. 1)根据输入的向量操作类型和向量长度,分配各线程(包括主线程和所有从线程)的计算任务后,确定各线程操作的向量的起始位置和长度;(3. 3. 2)各线程根据线程号以及向量长度,计算源操作数地址和循环计数寄存器,设置基地址寄存器和循环计数寄存器;(3. 3. 3)各线程根据线程号计算目的操作数地址,设置目的操作数基地址寄存器; (3. 3. 4)各线程根据各自的计算任务,在汇编语言程序文本段中插入向量读取、操作、 或结果写回的汇编指令,组成主线程向量操作代码段和从线程向量操作代码段。
所述步骤(3. 5)中,所述共享数据段由以下步骤构建(3. 5. 1)采用双精度浮点数据的随机数生成程序生成用作源操作数的双精度向量,向量长度由用户指定;把向量中的双精度数据转换为16进制,作为源操作数向量; (3. 5.2)根据输入的向量长度预留目的操作数存储空间,作为目的操作数向量。
所述数据段还包括供所述评测激励同步结构使用的锁变量和线程计数变量,所述评测激励同步结构通过锁变量控制同一时间仅有一个线程更新线程计数变量,并通过线程计数变量判别并保证多个线程必需全部完成各自所做的操作后主线程才继续执行后续操作。
所述步骤(3. 4)完成后,向所述汇编语言文件中写入用于验证主线程向量操作结果正确性的主线程计算结果比较代码段、用于验证从线程向量操作运算结果正确性的从线程计算结果比较代码段和用于计算结果比较有错时的报错的代码段;所述步骤(3. 5)中, 所述数据段还包括供所述主线程计算结果比较代码段和从线程计算结果比较代码段读取的正确的计算结果向量。
与现有技术相比,本发明的优点在于1、本发明的多线程交叉双精度短向量结构的评测激励自动构造方法,采用了构件化程序设计的思想,把基本的汇编语言代码段作为构造汇编语言程序的基本构件,自动构造多线程交叉双精度短向量结构的评测激励,有利于面向该类体系结构快速开发评测激励,可减少人员的工作量。
2、本发明可以编程实现,输入待评测或待验证的向量操作类型以及向量长度,输出的评测激励为多线程利用短向量指令完成计算任务的汇编语言程序。多次运行该程序, 输入不同的运算类型和向量长度,可以自动批量构造评测激励,能缩短构建时长,节约成本,提高评测激励开发效率,极大地方便了处理器验证和性能评估。


图1是多线程交叉双精度短向量结构的处理器内核结构示意图。
图2是本发明具体实施例的总流程示意图。
图3是本发明具体实施例中构造的评测激励的流程示意图。
具体实施方式
以下将结合说明书附图和具体实施例对本发明作进一步详细说明。
如图2所示,采用本发明的多线程交叉双精度短向量结构的评测激励自动构造方法构造用于评测和验证如图1所示的多线程交叉双精度短向量结构体系,步骤如下1、输入待评测的向量操作类型和向量长度。
2、自动创建一内容为空的汇编语言源程序文件foo. S。
3、向所述foo. s文件中写入如下内容的汇编语言程序文本3. 1用于多线程运行初始化的汇编语言代码段;本发明采用常规初始化代码段,所有构造出的汇编语言程序所需的初始化过程都相同。
3. 2评测激励控制结构,其包括3.2. 1启动多线程执行模式的代码段,用于设置多线程使能寄存器使处理器进入多线程工作状态;3. 2. 2线程选择并跳转的代码段,用于读取各个线程私有的线程号寄存器并根据线程号跳转到各个线程;其中线程号为0的线程是主线程,其他线程为从线程。
3. 3多线程向量操作程序段,其包括3. 3. 1主线程向量操作代码段,用于各线程计算任务分配、操作数的首地址和向量长度计算、读取源操作数向量和目的操作数向量并循环进行短向量运算操作。其构建过程如下a.主线程根据自己的线程号和计算任务分配,计算操作数的首地址和向量长度;b.主线程根据线程号以及向量的长度,计算源操作数地址和循环计数寄存器,设置基地址寄存器和循环计数寄存器;c.主线程根据线程号计算目的操作数地址,设置目的操作数基地址寄存器;d.主线程根据各自的计算任务,在汇编语言程序文本段中插入向量读取、操作、或结果写回的汇编指令,组成主线程向量操作代码段和从线程向量操作代码。
3.3.2从线程向量操作代码段,用于读取源操作数向量和目的操作数向量并进行短向量运算操作;其构建过程如下a.从线程根据自己的线程号和计算任务分配,计算操作数的首地址和向量长度;b.从线程根据线程号以及向量的长度,计算源操作数地址和循环计数寄存器,设置基地址寄存器和循环计数寄存器;c.从线程根据线程号计算目的操作数地址,设置目的操作数基地址寄存器;d.从线程根据各自的计算任务,在汇编语言程序文本段中插入向量读取、操作、或结果写回的汇编指令,组成主线程向量操作代码段和从线程向量操作代码。
3.4评测激励验证结构。其包括3. 4. 1主线程计算结果比较代码段,用于验证主线程向量操作结果正确性; 3. 4. 2从线程计算结果比较代码段,用于验证从线程向量操作运算结果正确性;3.4.3用于计算结果比较有错时的报错的代码段。
对于用作验证的测试激励,需要在主线程和从线程执行完向量运算操作的代码段之后,插入用于验证向量操作的运算结果正确性的结果比较代码段。实际运行时,结果比较代码段读取各个线程刚刚计算出的数值结果和对应的预先计算好的正确的计算结果进行比较,如果数值不同则执行报错代码。
3. 5评测激励同步结构,其包括3. 5. 1主线程同步代码段,用于判断并等待所有线程完成向量操作;如果所有线程都完成了操作,主线程报告并退出;否则主线程循环重复上述过程等待所有线程完成向量操作。
3.5.2从线程同步代码段,用于向主线程标识本线程是否完成向量操作。从线程完成双精度短向量运算后将线程计数变量增加1,进入忙等状态。
3.6数据段以及数据段初始化语句。所述数据段包括源操作数向量和目的操作数向量、锁变量、线程计数变量和用于验证的正确的计算结果;其中,源操作数向量和目的操作数向量为多线程共享数据段。数据段以及数据段初始化语句的构建步骤如下3. 6. 1构建共享数据段a.源操作数向量。采用双精度浮点数据的随机数生成程序生成用作源操作数的双精度向量,向量长度由用户指定;把向量中的双精度数据转换为16进制,作为源操作数向量, 并指定数据段的对齐方式为align 32。
b.目的操作数向量。根据输入的向量长度预留目的操作数存储空间,作为目的操作数向量,数据段的对齐方式为align 32。
c.正确的计算结果向量。对于用作验证用的测试激励,需要创建正确结果数据段,该数据段中保存的是预先计算好的正确结果;该数据段由验证用的激励的结果比较代码段(由步骤3. 4创建)读取。
d.创建锁变量。锁变量用于控制同一时间仅有一个线程更新线程计数变量。本实施例中,在共享数据区中创建一个64位的整型锁变量,并设置初始值为0,对齐方式为 align 8。当锁变量的值为0时表示未加锁,当锁变量的值为1时表示加锁。在程序运行时, 各个线程循环用比较并交换指令读取锁变量并判断加锁状态,若锁变量的值为0,表示没有线程使用共享数据;获得锁变量的线程先将锁变量改为1,然后对读写共享数据进行向量操作,完成向量操作后,用比较并交换指令将锁变量恢复为0。
e.创建线程计数变量。线程计数变量用于判别并保证多个线程必需全部完成各自所做的操作后主线程才继续执行后续操作。本实施例中,在共享数据区中创建一个64位的整型线程计数变量,并设置初始值为0,对齐方式为align 8。在程序运行时,获得锁变量的线程完成向量操作后,将线程计数变量加1 ;当主线程判断线程计数器等于线程总数时, 判断所有线程均完成了向量操作,则报告并退出。
4、将步骤3得到的汇编语言文件作为自动生成的多线程交叉双精度短向量结构的评测激励。
上述步骤中,评测激励的向量操作程序段、验证结构和同步结构写入foo. s文件的顺序不限,可以依照上述步骤进行,也可以采用图2所示的顺序,先将主线程的三种结构写完,再逐一写入从线程的相应结构。如图3所示,本实施例自动生成的评测激励的执行流8程如下(1)多线程执行环境初始化。
(2)读取硬件线程相应的线程号寄存器,根据不同的线程号跳转到主线程或从线程的代码入口处;若线程号为0,则跳至步骤(3)转到主线程入口 ;否则跳到步骤(5),转入相应的从线程入口。
(3)主线程根据线程号和计算任务分配,完成双精度短向量操作;之后执行获取锁变量的代码,如果获得了锁变量,则将线程计数器加1,然后释放锁变量。
(4)读取线程计数器,判断线程计数器与总线程数是否相等,若相等则表示所有线程均完成了向量操作,则程序终止,回复系统状态并退出;若二者不相等,则循环执行本步骤直至二者相等。
(5)相应的从线程根据线程号和计算任务分配,完成双精度短向量操作;之后执行获取锁变量的代码,如果获得了锁变量,则将线程计数器加1,然后释放锁变量,进入忙等状态。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
权利要求
1.一种多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于包括以下步骤(1)输入待评测的向量操作类型和向量长度;(2)自动创建一内容为空的用作评测激励的汇编语言文件;(3)向所述汇编语言文件中写入如下内容 (3.1)多线程运行初始化代码段;(3. 2)评测激励控制结构,包括启动多线程执行模式的代码段,用于设置多线程使能寄存器使处理器进入多线程工作状态;线程选择并跳转的代码段,用于读取各个线程私有的线程号寄存器并根据线程号跳转到各个线程;(3. 3)多线程向量操作程序段,包括主线程向量操作代码段,用于各线程计算任务分配、操作数的首地址和向量长度计算、读取源操作数向量和目的操作数向量并循环进行短向量运算操作;从线程向量操作代码段,用于读取源操作数向量和目的操作数向量并进行短向量运算操作;(3. 4)评测激励同步结构,包括主线程同步代码段,用于判断并等待所有线程完成向量操作;从线程同步代码段,用于标识本线程完成了向量操作;(3. 5)数据段以及数据段初始化语句,所述数据段为多线程共享数据段,所述多线程共享数据段含有多线程共享的源操作数向量和目的操作数向量;(4)将步骤(3)得到的汇编语言文件作为自动生成的多线程交叉双精度短向量结构的评测激励。
2.根据权利要求1所述的多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于,所述步骤(3. 3)中,所述多线程向量操作程序段的创建步骤如下(3. 3. 1)根据输入的向量操作类型和向量长度,分配各线程的计算任务后,确定各线程操作的向量的起始位置和长度;(3. 3. 2)各线程根据线程号以及向量长度,计算源操作数地址和循环计数寄存器,设置基地址寄存器和循环计数寄存器;(3. 3.3)各线程根据线程号计算目的操作数地址,设置目的操作数基地址寄存器; (3. 3. 4)各线程根据各自的计算任务,在汇编语言程序文本段中插入向量读取、操作、 或结果写回的汇编指令,组成主线程向量操作代码段和从线程向量操作代码段。
3.根据权利要求2所述的多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于,所述步骤(3. 5)中,所述共享数据段由以下步骤构建(3. 5. 1)采用双精度浮点数据的随机数生成程序生成用作源操作数的双精度向量,向量长度由用户指定;把向量中的双精度数据转换为16进制,作为源操作数向量; (3. 5.2)根据输入的向量长度预留目的操作数存储空间,作为目的操作数向量。
4.根据权利要求3所述的多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于,所述数据段还包括供所述评测激励同步结构使用的锁变量和线程计数变量,所述评测激励同步结构通过锁变量控制同一时间仅有一个线程更新线程计数变量,并通过线程计数变量判别并保证多个线程必需全部完成各自所做的操作后主线程才继续执行后续操作。
5.根据权利要求1或2或3或4所述的多线程交叉双精度短向量结构的评测激励自动构造方法,其特征在于,所述步骤(3. 4)完成后,向所述汇编语言文件中写入用于验证主线程向量操作结果正确性的主线程计算结果比较代码段、用于验证从线程向量操作运算结果正确性的从线程计算结果比较代码段和用于计算结果比较有错时报错的代码段;所述步骤(3. 5)中,所述数据段还包括供所述主线程计算结果比较代码段和从线程计算结果比较代码段读取的正确的计算结果向量。
全文摘要
本发明公开了一种多线程交叉双精度短向量结构的评测激励自动构造方法,包括步骤输入待评测的向量操作类型和向量长度;自动创建一内容为空的用作评测激励的汇编语言文件;向汇编语言文件中写入如下内容多线程运行初始化代码段、评测激励控制结构、多线程向量操作程序段、评测激励同步结构以及数据段以及数据段初始化语句;构成一完整的多线程交叉双精度短向量结构的评测激励。本发明可以实现自动批量构造评测激励,能缩短构建时长,节约成本,提高评测激励开发效率,极大地方便了处理器验证和性能评估。
文档编号G06F11/36GK102508776SQ20111034280
公开日2012年6月20日 申请日期2011年11月3日 优先权日2011年11月3日
发明者左克, 彭林, 易会战, 李春江, 杜云飞, 杨灿群, 王 锋, 赵克佳, 陈娟, 黄春 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1