CN102708090A - 用于共享存储多核多线程处理器硬件锁的验证方法 - Google Patents

用于共享存储多核多线程处理器硬件锁的验证方法 Download PDF

Info

Publication number
CN102708090A
CN102708090A CN2012101514484A CN201210151448A CN102708090A CN 102708090 A CN102708090 A CN 102708090A CN 2012101514484 A CN2012101514484 A CN 2012101514484A CN 201210151448 A CN201210151448 A CN 201210151448A CN 102708090 A CN102708090 A CN 102708090A
Authority
CN
China
Prior art keywords
thread
lock
synchronous operation
hardware lock
variable
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012101514484A
Other languages
English (en)
Other versions
CN102708090B (zh
Inventor
廖湘科
李春江
杜云飞
晏小波
隋兵才
邓让钰
王永文
杨灿群
窦强
徐炜遐
卢凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN201210151448.4A priority Critical patent/CN102708090B/zh
Publication of CN102708090A publication Critical patent/CN102708090A/zh
Application granted granted Critical
Publication of CN102708090B publication Critical patent/CN102708090B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种用于共享存储多核多线程处理器硬件锁的验证方法,实施步骤如下:1)初始化设置同步线程数目、线程访问存储器的最大访问次数;2)构造用于操作共享存储多核多线程处理器硬件锁的同步操作模块;3)根据所述同步线程数目执行多线程初始化;根据所述最大访问次数为每一个线程随机生成小于所述最大访问次数的线程访存操作序列,每一个线程根据所述线程访存次数进行访存操作;4)根据处理器硬件锁的地址范围随机指定一个用于验证激励的硬件锁地址;通过所述同步操作模块控制各个线程针对所述硬件锁地址的同步操作,并在所有线程完成后向验证环境输出激励执行结果。本发明具有验证效率高、验证速度快、使用方便快捷的优点。

Description

用于共享存储多核多线程处理器硬件锁的验证方法
技术领域
本发明涉及处理器设计领域,具体涉及一种用于共享存储多核多线程处理器硬件锁的验证方法。
背景技术
处理器设计中的芯片级验证是指在全芯片验证环境下、在加载操作系统之前在芯片上运行芯片级验证激励来验证处理器设计的正确性。芯片级验证激励是用面向芯片指令集的汇编语言编写的汇编语言程序,由汇编器汇编成目标码后,再由存储映像生成工具生成存储映像加载到处理器芯片级验证环境中执行。芯片级验证激励的执行可以在全芯片级测试处理器设计的正确性。
共享存储多核多线程处理器已经成为目前通用高性能处理器的主流。随着处理器工艺技术的进步和体系结构的改进,单个芯片支持的线程数目将会达到数百量级。在设计实现这种共享存储众线程处理器的过程中,为了提高多线程操作线程间共享的锁变量的性能,硬件设计了特殊的锁变量处理机制,这种锁机制称为硬件锁。
但是,现有技术针对共享存储众线程处理器的芯片级验证激励代码由设计和验证人员手工编写,现有技术的用于共享存储多核多线程处理器硬件锁的验证方法均针对特定的验证程序模式,不同的程序模式需要按照验证激励代码编写要求,一行一行地编写汇编语言程序。要测试某种硬件锁操作模式下芯片的行为,就要编写相应的汇编语言程序,因此要完成多种特性的验证,则需要投入大量的人力物力,芯片级验证的效率非常低下。
发明内容
本发明要解决的技术问题是提供一种验证效率高、验证速度快、使用方便快捷的用于共享存储多核多线程处理器硬件锁的验证方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种用于共享存储多核多线程处理器硬件锁的验证方法,其实施步骤如下:
1)初始化设置同步线程数目、线程访问存储器的最大访问次数;
2)构造用于操作共享存储多核多线程处理器硬件锁的同步操作模块;
3)根据所述同步线程数目执行多线程初始化;根据所述最大访问次数为每一个线程随机生成小于所述最大访问次数的线程访存操作序列,每一个线程根据所述线程访存次数进行访存操作;
4)根据处理器的锁地址范围随机指定一个用于验证激励的硬件锁地址;通过所述同步操作模块控制各个线程针对所述硬件锁地址的操作,并在所有线程完成后向验证环境输出激励执行结果。
作为本发明上述技术方案的进一步改进:
所述步骤1)还包括初始化设置同步操作类型;所述步骤2)具体的步骤包括:当同步操作类型为栅栏同步操作时,根据栅栏同步操作构造用于操作共享存储多核多线程处理器硬件锁的栅栏同步模块;当同步操作类型为临界区同步操作时,根据临界区同步操作构造用于操作共享存储多核多线程处理器硬件锁的临界区同步模块。
当同步操作类型为栅栏同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.1.1)当线程运行到同步阶段时,将所述硬件锁地址中保存的锁变量读入寄存器中,此时硬件锁变量的值在读入寄存器的同时所述存储器中的锁变量自动加一;
4.1.2)判断读出的锁变量的数值是否等于所述同步线程数目,如果锁变量的数值不等于同步线程数目,则先到达的线程反复读取存储器中的锁变量,此时读出的锁变量的值是锁变量的原始值且这种读取后锁变量原来的值不变;直至后到达的线程将所述锁变量修改为等于所述同步线程数目时判定所有线程的栅栏同步操作完成。
当同步操作类型为临界区同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.2.1)当线程运行到临界区时,将所述硬件锁地址中保存的锁变量读入寄存器中,此时硬件锁变量的值在读入寄存器时所述存储器中的锁变量自动加一;
4.2.2)各个线程分别判断所述存储器中锁变量的数值是否为0,如果锁变量的数值不为0,则当前线程返回继续执行步骤4.2.1);如果锁变量的数值为0,则当前线程进入临界区开始执行临界区的代码;当线程执行完临界区代码后,将硬件锁地址所指向的存储器位置中的锁变量的值写为0以允许其他线程再进入临界区。
本发明具有下述优点:本发明以构造基本硬件锁的同步代码模块为基础,根据最大访问次数为每一个线程随机生成一个小于最大访问次数的线程访存操作,每一个线程根据线程访存次数进行存储器访问,使得不同线程进入同步操作的时间各不相同,然后通过随机指定一个用于验证激励的硬件锁地址、使用硬件锁的同步模块控制各个线程针对硬件锁地址进行同步操作并在所有线程完成后向验证环境输出激励执行结果,能够根据用户指定的验证特性完成对共享存储多核多线程处理器硬件锁的验证,具有验证效率高、验证速度快、使用方便快捷的优点。
附图说明
图1为本发明实施例的实施流程示意图。
图2为本发明实施例中多线程硬件锁验证激励的构建步骤示意图。
图3为本发明实施例中构建完成的多线程使用硬件锁的验证激励的结构示意图。
具体实施方式
如图1所示,本实施例用于共享存储多核多线程处理器硬件锁的验证方法的实施步骤如下:
1)初始化设置同步线程数目、线程访问存储器的最大访问次数;
2)构造用于操作共享存储多核多线程处理器硬件锁的同步操作模块;
3)根据所述同步线程数目执行多线程初始化;根据所述最大访问次数为每一个线程随机生成小于所述最大访问次数的线程访存操作序列,每一个线程根据所述线程访存次数进行访存操作;
4)根据处理器的锁地址范围随机指定一个用于验证激励的硬件锁地址;通过所述同步操作模块控制各个线程针对所述硬件锁地址的操作,并在所有线程完成后向验证环境输出激励执行结果。
本实施例以构造使用基本硬件锁的同步模块为基础,根据最大访问次数为每一个线程随机生成一个小于最大访问次数的线程访存操作,每一个线程根据线程访存次数进行访存操作,使得不同线程进入同步操作的时间各不相同,然后通过随机指定一个用于验证激励的硬件锁地址,同步操作模块控制各个线程针对硬件锁地址进行同步操作并在所有线程完成后向验证环境输出激励执行结果,能够根据用户指定的验证特性完成对共享存储多核多线程处理器的硬件锁的验证,具有验证效率高、验证速度快、使用方便快捷的优点。
所述步骤1)还包括初始化设置同步操作类型;所述步骤2)具体的步骤包括:当同步操作类型为栅栏同步操作时,根据栅栏同步操作构造用于操作共享存储多核多线程处理器硬件锁的栅栏同步模块;当同步操作类型为临界区同步操作时,根据临界区同步操作构造用于操作共享存储多核多线程处理器硬件锁的临界区同步模块。
当同步操作类型为栅栏同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.1.1)当线程运行到同步阶段时,将所述硬件锁地址中保存的锁变量读入寄存器中(这里的读使用的是读加一地址),此时硬件锁变量的值在读入寄存器的同时所述存储器中的锁变量自动加一;
4.1.2)判断读出的锁变量的数值是否等于所述同步线程数目,如果锁变量的数值不等于同步线程数目,则先到达的线程反复读取存储器中的锁变量(这里的读使用的是读原值地址),此时读出的锁变量的值是锁变量的原始值且这种读取后锁变量原来的值不变;直至后到达的线程将所述锁变量修改为等于所述同步线程数目时判定所有线程的栅栏同步操作完成。
当同步操作类型为临界区同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.2.1)当线程运行到临界区时,将所述硬件锁地址中保存的锁变量读入寄存器中(这里的读使用的是读加一地址),此时硬件锁变量的值在读入寄存器时所述存储器中的锁变量自动加一;
4.2.2)各个线程分别判断所述存储器中锁变量的数值是否为0,如果锁变量的数值不为0,则当前线程返回继续执行步骤4.2.1);如果锁变量的数值为0,则当前线程进入临界区开始执行临界区的代码;当线程执行完临界区代码后,将硬件锁地址所指向的存储器位置中的锁变量的值写为0以允许其他线程再进入临界区。
对于多核多线程处理器的芯片级验证而言,多线程的验证激励初始化部分完成了多线程启动设置,该部分功能是成熟的汇编语言代码模块,但是为了面向随机自动构造多种验证激励的需求,可以修改代码模块中指定的线程数目;本实施例中,同步线程数目、线程访问存储体、同步操作类型采用宏定义作为参数,不同激励中的不同的并发线程数目只要自动修改同步线程数目、线程访问存储体、同步操作类型三者的宏定义数值。
本实施例应用的共享存储多核多线程处理器为型号为FT1500的飞腾处理器(下文中简称FT1500处理器)。在FT1500处理器中,硬件锁实现了对特定地址的读取操作就完成了读并加一或读并减一的操作。例如在如下汇编代码中,对地址为0x8F00000000的64位锁变量;当对该地址或0x400后的地址读取时,将锁变量的值读入寄存器%g1同时存储器中的锁变量自动减一;当对该地址或0x800后的地址读取时,将锁变量的值读入寄存器%g1同时存储器中的锁变量自动加一。本实施例中则利用硬件锁的这种机制构造出基本的同步操作模块。
Figure 2012101514484100002DEST_PATH_IMAGE002
如上代码所示,本实施例根据硬件锁的设计特点,利用硬件锁的特殊功能,构造最常用的同步汇编程序模块(主要是栅栏同步和临界区)。硬件锁的设计特点是;对特定存储器地址的读取操作就完成了对该地址中锁变量的“读加一”(或“读减一”)的原子操作。例如在飞腾处理器(FT1500)的IO(输入输出)地址空间中开辟了锁变量存储区域,对其中锁变量的读取由硬件实现了原子操作功能,原子操作就是指从存储器中读出变量原值的同时将存储器中原值加一或减一,这两个操作不可分割地一起完成。
本实施例中,步骤2)中构造同步操作模块包括栅栏同步操作模块和临界区同步操作模块。在FT1500处理器中,硬件锁是指特定地址空间内的锁变量,针对同一个锁变量,定义了“读原值”地址、“读加一”地址和“读减一”地址。“读加一”和“读减一”是指将该地址的锁变量读入到通用寄存器中之后存储器中锁变量增一或减一;增一或减一操作和读操作原子地完成,这是由硬件实现保证的。栅栏同步就是要所有线程都到达栅栏同步点后,再继续执行后续的程序代码,一旦有线程没有到达,那么先到达的线程就反复判断栅栏同步退出条件,直到条件满足。临界区是一段程序代码,被一个锁变量保护起来,同一时刻只有获得了锁的线程才能执行。临界区通常用0/1锁保护,只有获得了锁的线程才能进入临界区执行。本实施例中,栅栏同步操作模块和临界区同步操作模块均采用Sparc-V9汇编语言描述,FT1500处理器兼容Sparc-V9指令集。
本实施例中,栅栏同步操作模块的代码为:
      
Figure 2012101514484100002DEST_PATH_IMAGE004
  
在如上代码模块中通用寄存器%g4中保存的是硬件锁变量所在的存储器位置的“读加一”地址,汇编语句“ldx  [%g4], %g1”将该变量的内容读入到通用寄存器%g1中,同时按照硬件锁的实现特点在读取了该锁变量同时存储器中的该锁变量同时增加了一。汇编语句“cmp %g1, 128”中的128为同步线程数目,表示有128个线程要进行栅栏同步,语句的意思是比较锁变量的值是否和预设的线程数目相同。所有线程都要执行上面的栅栏同步操作模块,当所有线程都执行完这段代码后,所有线程才能继续执行后续的程序语句,先到达的线程要反复读取锁变量的内容,和线程数比较,如果不等就跳转到barrier_wait_sync_inc标号语句反复执行。汇编语句“bne %xcc, barrier_wait_sync_inc”含义是针对上面做比较的汇编语句“cmp %g1, 128”的结果(结果在条件码寄存器%xcc中),如果不相等就跳转到barrier_wait_sync_inc标号。在Sparc V9指令集中,跳转语句后的语句也在跳转之后立即执行(跳转指令有一个指令空槽),即上面代码模块中“ldx [%g2], %g1”语句也在不相等的时候执行,该语句中的通用寄存器%g2中保存的是硬件锁变量的“读原值”地址。
本实施例中,临界区保护操作模块的代码为:
     
Figure 2012101514484100002DEST_PATH_IMAGE006
上述代码块中,语句“ldx  [%g4], %g5”将通用寄存器%g4中的锁变量地址所指的锁变量内容读入到通用寄存器%g5中,同时存储器中该锁变量值加一。汇编语句“cmp %g5, 0”的含义是:由于用硬件锁实现临界区保护,那么锁变量不为0表示已经有线程加锁了,其他线程就反复读取比较,如果锁变量为0,那么进行读取操作同时已经完成了锁变量增一的操作(即加锁操作),就表示执行该读取操作的线程获得了锁,可以执行临界区的代码了。获得了锁变量的线程执行完临界区的代码后,在临界区代码的结尾部分,用指令将锁变量重新置为0;那么,其他线程就可以再获得这个锁,进入临界区。
本实施例的各个线程初始化以后、在进入同步操作之前,需要随机执行一些存储器访问操作,强化各个线程访问锁变量的随机性。在此代码模块的构造中,本发明也采用随机的方法,各个线程根据用户指定的最大访存次数来生成小于最大访存次数的访存行为,访存行为中具体写入存储器的内容并不重要,本实施例中将地址值写入相应地址中。例如在FT1500这一硬件支持多线程的处理器中,芯片级验证激励中的如下代码就可以实现根据线程号跳转到不同的线程开始代码段执行。本实施例中存储访问操作的代码如下所示:
       其中语句“ta  T_RD_THID”的作用是处理器进入多线程执行状态,每个线程的各自线程号在寄存器%o1中(每个硬件线程都有一个独立的硬件寄存器%o1)。语句“mov      %o1, %l7”的作用是各个线程都将各自线程号存入各自本地的寄存器%l7中。之后的比较和跳转语句表示分别和自己的线程号比,如果相同,就跳入各个线程的入口处(在如上例子中是Thread1和Thread2),从各个线程入口开始各个线程并行执行各自的代码段。如果多线程同步时,各个线程执行的代码段的最后部分是跳入到同步程序模块(如栅栏和临界区)的开始处。各个线程在进入同步阶段(无论是栅栏同步还是临界区)之前,执行一些存储器访问操作。如上面举的例子中,线程1(Thread1)和线程2(Thread2)执行一些存储器访问操作,这些操作的具体内容并不重要,只要在自动构造激励的过程中保证随机访问一定次数的存储器,使各个线程到达同步点的时间有随机性。
在FT1500处理器中,在IO空间指定了特定的地址区域作为硬件锁变量存储空间。该处理器支持的锁地址范围是从0x8F00000000到0x8F00000BFF共1024个字节作为锁变量的存储空间,这个存储空间称为“锁空间”,锁变量可以按1/2/4/8字节四种访问宽度的整数来访问。为了遍历以上锁空间中的锁变量,在构造激励的过程中,本发明的自动化方法采用随机方法指定一个验证激励所使用到的硬件锁地址,如果不采用自动化方法,对每个锁变量的测试都要有手工编写或改写相应的汇编语言激励程序。随机生成的锁变量的地址,作为后续汇编语言程序段中的操作数。因此在硬件锁分配模块中需要随机生成一个锁变量的相应地址,用于后续对该硬件锁的同步操作。
在完成了多线程初始化、分配了硬件锁、多线程随机存储访问之后,在验证激励中插入栅栏同步操作模块或者临界区保护操作模块,并在多线程栅栏同步模块中设置相应的线程数,并使用步骤4)中随机选择的锁变量地址,通过同步操作模块控制各个线程针对硬件锁地址进行同步操作,并在所有线程完成后向验证环境输出激励执行结果,最终完成对共享存储多核多线程处理器硬件锁的验证。
本实施例的方法以多线程汇编语言程序作为载体,能够自动生成使用指定同步操作的多线程汇编语言程序,作为芯片级验证激励。将该激励加载到芯片模拟环境中运行,可以利用多线程并发执行对硬件锁的操作,来验证处理器提供的硬件锁机制的功能和正确性。本实施例在编程实现时,程序的输入是要验证的同步线程数目、线程访问存储体、同步操作类型,输出是实现此功能的、可作为芯片级验证激励的汇编语言程序;多次运行该程序,提供不同的输入,可以自动生成多种模式的面向硬件锁验证的验证激励代码,可以减少激励代码的开发时间,大幅度提高芯片级验证的效率。
如图2所示,本实施例中构建多线程汇编语言程序的具体步骤如下:
A1)创建一个空的汇编语言源程序文件,本实施例中,将该文件命名为verif.s。
A2)确定验证激励代码的验证特性。
验证激励代码的验证特性是指:同步线程数目、线程访问存储器最大次数、同步操作类型和锁变量地址,前三个特性(同步线程数目、线程访问存储器最大数据、同步操作类型)可以由每次自动生成激励时指定,最后一个特性(锁变量地址)采用在锁空间中随机分派的方法生成,这有利于生成大量的激励代码中尽可能随机地使用到锁空间中的锁变量,达到较好的验证效果。
A3)向verif.s文件中写入汇编语言的程序文本,按如下顺序写入相应内容。
A3.1)写入加载头文件语句。在激励程序的开始部分加载验证激励头文件,本实施例面向的FT1500处理器构造芯片级验证激励的过程中,在激励程序开始处写入“#include “hboot.s”。
A3.2)写入多线程初始化的代码模块。多线程初始化的代码模块,已经是验证激励编写中成熟的代码模块;在本实施例的激励自动化构造中,根据验证特性中线程数目,仅修改宏定义的同步线程数目。
A3.3)写入各个线程随机访问存储器的代码模块。按本实施例步骤3)的方法,根据各个线程进入同步段之前的存储访问的最大次数,随机为每个线程设置存储器访问的次数,即向verif.s文件中每个线程的执行体中写入指定次数(小于最大存储访问次数)的存储器读写语句(即ldx语句和stx语句),来增加各个线程进入同步点之前的访存随机性。
A3.4)写入使用硬件锁的多线程同步结构代码模块。根据同步操作的类型(栅栏同步或临界区),向verif.s文件中写入本实施例步骤一中构造多线程同步结构代码,根据线程数修改同步结构代码模块中的线程数。
A3.5)写入临界区内的代码。如果是验证多个线程利用硬件锁保护临界区,那么写入若干条汇编语句作为临界区执行的内容。本实施例主要测试硬件锁的设计正确性,临界区内线程的执行代码不重要,在具体实现中,本实施例仅写入某全局寄存器加一代码(该全局寄存器初始值为0,可以通过查看该寄存器内容来了解到多少个线程执行过了临界区)。
A3.6)写入汇报激励状态的程序语句。激励代码的最后部分,执行的是向验证环境报告激励执行情况的程序语句。在面向FT1500的芯片级验证环境中,只用如下一条跳转语句“ba Good_Trap”,Good_Trap是验证环境中固定的表示激励运行正确的代码的开始,已经在验证环境中预先定义了。
A3.7)写入数据段初始化语句。向verif.s中接着写入整个汇编程序的数据段初始化汇编语句,指定数据段的标识和空间长度,并为每个线程设置好数据段起始标号。
最终得到的多线程汇编语言程序的结构如图3所示,其具体结构包括:
B1)加载验证激励头文件程序语句。所有芯片级验证激励都要包含公共的初始化部分,这些公共的初始化部分已经在单独的汇编语言程序中实现。
B2)多线程初始化程序语句。在芯片级验证激励中,进入多线程模式代码模块已经是固定的,激励程序执行到这一步,就进入多线程并行的状态。
B3)多线程随机存储器访问的程序语句。进入多线程状态后,为了增加激励的复杂度和随机性,每个线程执行一些随机的存储器访问指令。
B4)使用硬件锁进行同步操作的程序语句。verif.s激励文件中的此部分代码就是采用补周一构造的使用硬件锁的多线程同步操作模块,可以是栅栏同步也可以是临界区,由激励构造时选择。
B5)“Good Trap”的程序语句。在verif.s激励文件的最后是“ba good_trap”语句。程序执行到这条语句就表示所有线程正确完成了使用硬件锁的同步操作,跳转到处理器的自陷(在该自陷中激励向验证环境汇报激励执行正确)。
B6)数据段声明语句。在激励的数据段声明语句中,用数据段标识“.data”标识程序的全局数据区的开始,在全局数据区中为程序的访问存储器的操作开辟存储器空间。对多线程存储器访问,在数据段中为不同的线程指定操作的数据段区域。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (4)

1.一种用于共享存储多核多线程处理器硬件锁的验证方法,其特征在于其实施步骤如下:
1)初始化设置同步线程数目、线程访问存储器的最大访问次数;
2)构造用于操作共享存储多核多线程处理器硬件锁的同步操作模块;
3)根据所述同步线程数目执行多线程初始化;根据所述最大访问次数为每一个线程随机生成小于所述最大访问次数的线程访存操作序列,每一个线程根据所述线程访存次数进行访存操作;
4)根据处理器的锁地址范围随机指定一个用于验证激励的硬件锁地址;通过所述同步操作模块控制各个线程针对所述硬件锁地址的操作,并在所有线程完成后向验证环境输出激励执行结果。
2.根据权利要求1所述的用于共享存储多核多线程处理器硬件锁的验证方法,其特征在于,所述步骤1)还包括初始化设置同步操作类型;所述步骤2)具体的步骤包括:当同步操作类型为栅栏同步操作时,根据栅栏同步操作构造用于操作共享存储多核多线程处理器硬件锁的栅栏同步模块;当同步操作类型为临界区同步操作时,根据临界区同步操作构造用于操作共享存储多核多线程处理器硬件锁的临界区同步模块。
3.根据权利要求2所述的用于共享存储多核多线程处理器硬件锁的验证方法,其特征在于,当同步操作类型为栅栏同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.1.1)当线程运行到同步阶段时,将所述硬件锁地址中保存的锁变量读入寄存器中,此时硬件锁变量的值在读入寄存器的同时所述存储器中的锁变量自动加一;
4.1.2)判断读出的锁变量的数值是否等于所述同步线程数目,如果锁变量的数值不等于同步线程数目,则先到达的线程反复读取存储器中的锁变量,此时读出的锁变量的值是锁变量的原始值且这种读取后锁变量原来的值不变;直至后到达的线程将所述锁变量修改为等于所述同步线程数目时判定所有线程的栅栏同步操作完成。
4.根据权利要求3所述的用于共享存储多核多线程处理器硬件锁的验证方法,其特征在于,当同步操作类型为临界区同步操作时,所述步骤4)中通过同步操作模块控制各个线程针对所述硬件锁地址的操作的详细步骤如下:
4.2.1)当线程运行到临界区时,将所述硬件锁地址中保存的锁变量读入寄存器中,此时硬件锁变量的值在读入寄存器时所述存储器中的锁变量自动加一;
4.2.2)各个线程分别判断所述存储器中锁变量的数值是否为0,如果锁变量的数值不为0,则当前线程返回继续执行步骤4.2.1);如果锁变量的数值为0,则当前线程进入临界区开始执行临界区的代码;当线程执行完临界区代码后,将硬件锁地址所指向的存储器位置中的锁变量的值写为0以允许其他线程再进入临界区。
CN201210151448.4A 2012-05-16 2012-05-16 用于共享存储多核多线程处理器硬件锁的验证方法 Expired - Fee Related CN102708090B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210151448.4A CN102708090B (zh) 2012-05-16 2012-05-16 用于共享存储多核多线程处理器硬件锁的验证方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210151448.4A CN102708090B (zh) 2012-05-16 2012-05-16 用于共享存储多核多线程处理器硬件锁的验证方法

Publications (2)

Publication Number Publication Date
CN102708090A true CN102708090A (zh) 2012-10-03
CN102708090B CN102708090B (zh) 2014-06-25

Family

ID=46900886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210151448.4A Expired - Fee Related CN102708090B (zh) 2012-05-16 2012-05-16 用于共享存储多核多线程处理器硬件锁的验证方法

Country Status (1)

Country Link
CN (1) CN102708090B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019655A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 面向多核微处理器的内存拷贝加速方法及装置
CN103116527A (zh) * 2013-03-05 2013-05-22 中国人民解放军国防科学技术大学 一种基于网络控制器的超大规模栅栏同步方法
CN106649189A (zh) * 2015-10-28 2017-05-10 中兴通讯股份有限公司 一种多核系统中硬件资源管理的方法及相应的多核系统
CN108762940A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108762941A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108846031A (zh) * 2018-05-28 2018-11-20 同方知网数字出版技术股份有限公司 一种面向电力行业的项目相似性对比方法
CN109522049A (zh) * 2017-09-18 2019-03-26 展讯通信(上海)有限公司 一种同步多线程系统中共享寄存器的验证方法及装置
CN110347517A (zh) * 2018-04-04 2019-10-18 厦门雅迅网络股份有限公司 双系统的通信方法及计算机可读存储介质
CN110688093A (zh) * 2019-09-11 2020-01-14 上海高性能集成电路设计中心 基于全局约束的锁指令伪随机自比较验证模型的实现方法
CN111897647A (zh) * 2020-09-29 2020-11-06 杭州未名信科科技有限公司 一种多核系统中多线程调度方法、装置及设备
CN116483545A (zh) * 2023-06-19 2023-07-25 支付宝(杭州)信息技术有限公司 一种多任务执行方法、装置以及设备
CN117555741A (zh) * 2024-01-10 2024-02-13 深流微智能科技(深圳)有限公司 基于uvm的原子指令模块验证系统、方法、设备及介质
CN117555741B (zh) * 2024-01-10 2024-04-26 深流微智能科技(深圳)有限公司 基于uvm的原子指令模块验证系统、方法、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373640B1 (en) * 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
CN101308461A (zh) * 2007-05-18 2008-11-19 国际商业机器公司 处理器及其中处理锁事务的方法
CN101840390A (zh) * 2009-03-18 2010-09-22 中国科学院微电子研究所 适用于多处理器系统的硬件同步电路结构及其实现方法
CN101908034A (zh) * 2010-06-28 2010-12-08 中国科学院计算技术研究所 众核处理器片上同步方法和其系统
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373640B1 (en) * 2003-07-31 2008-05-13 Network Appliance, Inc. Technique for dynamically restricting thread concurrency without rewriting thread code
CN101308461A (zh) * 2007-05-18 2008-11-19 国际商业机器公司 处理器及其中处理锁事务的方法
CN101840390A (zh) * 2009-03-18 2010-09-22 中国科学院微电子研究所 适用于多处理器系统的硬件同步电路结构及其实现方法
CN101908034A (zh) * 2010-06-28 2010-12-08 中国科学院计算技术研究所 众核处理器片上同步方法和其系统
CN102331923A (zh) * 2011-10-13 2012-01-25 西安电子科技大学 一种基于多核多线程处理器的功能宏流水线实现方法

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103019655B (zh) * 2012-11-28 2015-07-29 中国人民解放军国防科学技术大学 面向多核微处理器的内存拷贝加速方法及装置
CN103019655A (zh) * 2012-11-28 2013-04-03 中国人民解放军国防科学技术大学 面向多核微处理器的内存拷贝加速方法及装置
CN103116527A (zh) * 2013-03-05 2013-05-22 中国人民解放军国防科学技术大学 一种基于网络控制器的超大规模栅栏同步方法
CN103116527B (zh) * 2013-03-05 2016-12-28 中国人民解放军国防科学技术大学 一种基于网络控制器的超大规模栅栏同步方法
CN106649189A (zh) * 2015-10-28 2017-05-10 中兴通讯股份有限公司 一种多核系统中硬件资源管理的方法及相应的多核系统
CN106649189B (zh) * 2015-10-28 2021-04-09 中兴通讯股份有限公司 一种多核系统中硬件资源管理的方法及相应的多核系统
CN109522049A (zh) * 2017-09-18 2019-03-26 展讯通信(上海)有限公司 一种同步多线程系统中共享寄存器的验证方法及装置
CN109522049B (zh) * 2017-09-18 2023-04-25 展讯通信(上海)有限公司 一种同步多线程系统中共享寄存器的验证方法及装置
CN110347517A (zh) * 2018-04-04 2019-10-18 厦门雅迅网络股份有限公司 双系统的通信方法及计算机可读存储介质
CN110347517B (zh) * 2018-04-04 2023-05-30 厦门雅迅网络股份有限公司 双系统的通信方法及计算机可读存储介质
CN108762941A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108762940B (zh) * 2018-04-12 2020-09-04 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108762940A (zh) * 2018-04-12 2018-11-06 武汉斗鱼网络科技有限公司 多线程访问方法及装置
CN108846031A (zh) * 2018-05-28 2018-11-20 同方知网数字出版技术股份有限公司 一种面向电力行业的项目相似性对比方法
CN108846031B (zh) * 2018-05-28 2022-05-13 同方知网数字出版技术股份有限公司 一种面向电力行业的项目相似性对比方法
CN110688093A (zh) * 2019-09-11 2020-01-14 上海高性能集成电路设计中心 基于全局约束的锁指令伪随机自比较验证模型的实现方法
CN110688093B (zh) * 2019-09-11 2023-03-28 上海高性能集成电路设计中心 基于全局约束的锁指令伪随机自比较验证模型的实现方法
CN111897647A (zh) * 2020-09-29 2020-11-06 杭州未名信科科技有限公司 一种多核系统中多线程调度方法、装置及设备
CN116483545A (zh) * 2023-06-19 2023-07-25 支付宝(杭州)信息技术有限公司 一种多任务执行方法、装置以及设备
CN116483545B (zh) * 2023-06-19 2023-09-29 支付宝(杭州)信息技术有限公司 一种多任务执行方法、装置以及设备
CN117555741A (zh) * 2024-01-10 2024-02-13 深流微智能科技(深圳)有限公司 基于uvm的原子指令模块验证系统、方法、设备及介质
CN117555741B (zh) * 2024-01-10 2024-04-26 深流微智能科技(深圳)有限公司 基于uvm的原子指令模块验证系统、方法、设备及介质

Also Published As

Publication number Publication date
CN102708090B (zh) 2014-06-25

Similar Documents

Publication Publication Date Title
CN102708090A (zh) 用于共享存储多核多线程处理器硬件锁的验证方法
US9038042B2 (en) Staged loop instructions
CN102163142B (zh) 使用写入掩码的具有simd架构的寄存器分配
CN105389158B (zh) 数据处理系统、编译器、处理器的方法和机器可读介质
CN104040490B (zh) 用于多引擎微处理器的加速的代码优化器
CN104040491B (zh) 微处理器加速的代码优化器
Bala et al. Efficient instruction scheduling using finite state automata
CN101681261B (zh) 运算处理装置及其控制方法
CN103927187B (zh) 嵌入式系统程序执行方法
KR101702651B1 (ko) 하드웨어 포인터를 이용한 simd 코어 내 분기 해법
CN103353834B (zh) 对零谓词分支误预测的分支误预测行为抑制
CN101963918B (zh) 实现cpu/gpu异构平台的虚拟执行环境的方法
DE69722138T2 (de) Code-Optimierer für Pipeline-Rechner
US7458065B2 (en) Selection of spawning pairs for a speculative multithreaded processor
DE102015002383A1 (de) Verfahren und Vorrichtung zum Implementieren einer dynamischen Out-of-order-Prozessorpipeline
US20090106730A1 (en) Predictive cost based scheduling in a distributed software build
US20110257955A1 (en) Gate-Level Logic Simulator Using Multiple Processor Architectures
WO2015067488A1 (en) A data processing apparatus and method for scheduling sets of threads on parallel processing lanes
Fisher et al. Microcode compaction: Looking backward and looking forward
Kessler Scheduling expression DAGs for minimal register need
CN106293736B (zh) 用于粗粒度多核计算系统的两级编程装置及其计算方法
CN113360157A (zh) 一种程序编译方法、设备以及计算机可读介质
Yang et al. A hybrid circular queue method for iterative stencil computations on GPUs
Di Carlo et al. On the in-field test of the GPGPU scheduler memory
CN102508776B (zh) 多线程交叉双精度短向量结构的评测激励自动构造方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20140625

Termination date: 20180516

CF01 Termination of patent right due to non-payment of annual fee