CN103197954B - 信息处理装置和控制信息处理装置的方法 - Google Patents
信息处理装置和控制信息处理装置的方法 Download PDFInfo
- Publication number
- CN103197954B CN103197954B CN201210500756.3A CN201210500756A CN103197954B CN 103197954 B CN103197954 B CN 103197954B CN 201210500756 A CN201210500756 A CN 201210500756A CN 103197954 B CN103197954 B CN 103197954B
- Authority
- CN
- China
- Prior art keywords
- node
- processing unit
- hardware thread
- unit
- state
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Power Sources (AREA)
- Stored Programmes (AREA)
- Multi Processors (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开了信息处理装置和控制信息处理装置的方法。当由于等待另一个CPU的处理而中止处理时,硬件线程使唤醒信号生成单元的休眠ID寄存器存储标识硬件线程的休眠ID。当硬件线程等待的处理结束时,唤醒信号生成单元使唤醒信号生成单元的唤醒数据寄存器存储由节点通知的休眠ID。当休眠ID寄存器的休眠ID与唤醒数据寄存器的休眠ID彼此一致时,唤醒信号生成单元将使硬件线程的停止取消的唤醒信号输出到所述硬件线程。
Description
技术领域
本文讨论的实施例涉及信息处理装置和控制信息处理装置的方法。
背景技术
已经存在有关信息处理装置的多种常规控制方法,所述信息处理装置包括具有处理器和存储单元的多个节点,包含在多个节点中的处理器控制待在其硬件线程中执行的处理之间的同步。
通常,线程是被软件并行执行的程序的处理单元,而多线程是多个线程在一个处理器上的并行执行。
另一方面,硬件线程也被称为硬件多线程,并被称作以下技术。例如,硬件线程是用于共享诸如包含在CPU(CentralProcessingUnit,中央处理器)中的相同核上的功能单元、寄存器、TLB(TranslationLook-asideBuffer,旁路转换缓冲、转换旁视缓冲)以及系统总线控制器等硬件资源的技术。换言之,硬件线程是用于共享硬件资源以在同一核上同时运行多个线程的技术。关于硬件线程,除同步运行多个线程的技术以外,已经知道通过时分多路复用来运行多个线程的多种实施方法,诸如VMT(VerticalMulti-Threading,垂直多线程)和SMT(SimultaneousMulti-Threading,同步多线程)。
例如,考虑以下情形,在上面提到的硬件线程中,包含在第一节点中的第一处理器所包含的第一硬件线程中的正在运行的处理需要包含在第二节点中的第二存储单元中所存储的数据。
对于上面提到的情形中的处理之间的同步的控制方法,存在例如轮询系统中的控制方法。换言之,第一处理器使第一硬件线程中正在运行的处理中止并且执行轮询处理以访问第一存储单元,直到包含在第二节点中的第二处理器将数据拷贝到第一存储单元的处理完成。当第二处理器将数据拷贝到第一存储单元的处理完成时,第一处理器从第一存储单元中读取数据,并且恢复在第一硬件线程中被中止的处理(suspendedprocess)。
此外,对于上面提到的情形中的控制处理之间的同步的另一种方法,存在例如中断系统中的控制方法。换言之,第一处理器使第一硬件线程中正在运行的处理中止,并且随后向第一处理器发出中断通知,该中断通知通告第二处理器已经完成将数据拷贝到第一存储单元的处理。然后第一处理器执行作为OS(OperatingSystem,操作系统)的内核处理的各种处理,诸如处理切换时的寄存器保存处理、通过OS的权限切换处理、用于启动中断处理程序以从第一存储单元中读取数据的处理。然后第一处理器从第一存储单元读取数据,从而恢复在第一硬件线程中被中止的处理。
专利文献1:国际专利申请的日本国家公布No.2006-500639
专利文献2:日本已公开专利No.2006-031691
然而,在上面提到的已知技术中,虽然该处理在第一硬件线程中被中止,但是执行存取第一存储单元的轮询处理。因此,存在以下问题:在多个硬件线程之间共享的硬件资源(诸如在其他硬件线程之间共享的系统总线控制器)在第一处理器中没有被有效地使用。
此外,在上面提到的已知技术中,存在以下问题:由于在第一硬件线程中执行的操作系统的内核处理(诸如处理切换时的寄存器保存和恢复处理会引起开销),因此不可能快速切换处理。
因此,本发明的实施例一个方面的目的是当包含在多个节点中的处理单元对在多个节点的各个处理单元中所执行的处理之间的同步进行控制时,促进硬件资源的有效使用。
发明内容
根据实施例的方面,信息处理装置包括多个节点,其中每一节点包括:处理单元,该处理器单元执行处理并且控制处理的状态;存储单元,当处理单元将处理状态从第一状态转变到第二状态时,该存储单元存储标识该处理单元的标识信息;接收单元,该接收单元接收从包含在自身节点或另一节点中的另一处理单元中传送的标识信息;以及输出单元,当由接收单元接收的标识信息与在存储单元中存储的标识信息一致时,该输出单元输出将处理状态从第二状态转变到第一状态的控制信号。
附图说明
图1是示出根据第一实施例的信息处理装置的配置的框图;
图2是示出根据第一实施例的处理的顺序图;
图3是示出根据第一实施例的唤醒(WAKEUP)包的配置的示意图;
图4是示出根据第一实施例的处理的时间图;
图5是示出根据第一实施例的处理的流程图;
图6是示出根据第二实施例的信息处理装置的配置的框图;
图7是示出根据第二实施例的处理的流程图;以及
图8是示出根据第二实施例的唤醒信号开启(ON)处理的流程图。
具体实施方式
将参考附图说明本发明的优选的实施例。以下实施例仅仅说明了示例,并不限制本公开的技术。此外,实施例可在不引起矛盾的范围内适当地组合。
[a]第一实施例
第一实施例的信息处理装置的配置
图1示出了根据第一实施例的信息处理装置的配置的框图。以下,SC表示系统控制器,CPU示表中央处理单元,以及MAC表示存储器存取控制器。此外,IC-ctrl表示内部连接控制器,IC-IF表示内部连接接口,以及SVP表示服务处理器。
此外,以下,节点表示信息处理单元的单元。SC控制诸如在CPU和MAC之间的数据传输等处理,其被安装在节点上以控制整个节点。MAC连接在本地存储器和共享存储器(其是诸如DIMM(DualInlineMemoryModule,双列直插式存储模块)等存储器)与SC之间以控制对本地存储器和共享存储器的存取。
此外,IC-ctrl是控制节点之间通信的控制器。IC-IF是由IC-ctrl控制的节点之间的通信接口。SVP包含在每一节点中,是以与诸如每一节点的CPU等算术处理单元独立的方式来控制和监视每一节点中的硬件的处理器,并且经由包括在另一节点中的SVP,LAN(LocalAreaNetwork,局域网)等通过通信来发送和接收信息。
如图1所示,根据第一实施例的信息处理装置1包括节点10和20。节点10包括SC11。节点10还包括经由图1中的点划线所表示的系统总线12分别连接到SC11的CPU13a和13b、MAC14和IC-ctrl15。
节点10还包括分别连接到MAC14的本地存储器16a和共享存储器16b。节点10还包括分别连接到IC-ctrl15的唤醒(WAKEUP)信号生成单元17a和17b。节点10还包括SVP18。
SC11将CPU13a和13b存取本地存储器16a和共享存储器16b的请求传送到MAC14。此外,SC11将节点20对共享存储器16b的存取传送到MAC14。此外,SC11控制在CPU13a和13b与唤醒信号生成单元17a和17b之间的信息输入和输出。此外,SC11将CPU13a和13b对节点20的存取传送到IC-ctrl15。
此外,SC11将从CPU13a和13b到唤醒信号生成单元17a和17b的数据分别输入到唤醒信号生成单元17a和17b。此外,IC-ctrl15将从节点20到唤醒信号生成单元17a和17b的数据分别输入到唤醒信号生成单元17a和17b。
节点20具有与节点10相同的配置,并且包括不同附图标记而具有相同名称的元件具有相同的配置和功能。节点20包括SC21、系统总线22、CPU23a和23b、MAC24、IC-ctrl25、本地存储器26a、共享存储器26b、唤醒信号生成单元27a和27b、以及SVP28。
节点20中的SC21、系统总线22、CPU23a和23b、MAC24、IC-ctrl25分别对应于节点10中的SC11、系统总线12、CPU13a和13b、MAC14和CI-ctrl15。此外,节点20中的本地存储器26a、共享存储器26b以及SVP28分别对应于节点10中的本地存储器16a、共享存储器16b以及SVP18。此外,节点20中的唤醒信号生成单元27a和27b分别对应于节点10中的唤醒信号生成单元17a和17b。
节点10和20可经由IC-IF3连接到IC-ctrl15和25来彼此通信。此外,节点10的SVP18和节点20的SVP28可经由预定通信线路连接而彼此通信。
第一实施例的CPU和唤醒信号生成单元的配置
将以CPU23a为代表来给出CPU13a,13b,23a和23b的配置说明。换言之,CPU13a,13b和23b的配置与CPU23a的配置相同。此外,将以唤醒信号生成单元27a为代表来给出唤醒信号生成单元17a,17b,27a和27b的配置。换言之,唤醒信号生成单元17a,17b和27b的配置与唤醒信号生成单元27a相同。
如图1所示,CPU23a是例如多核CPU,并且包含在多核CPU中的CPU核对应于硬件线程23a-1和23a-2。在CPU23a的相同核上,硬件线程23a-1和23a-2共享CPU23a的硬件资源来分别执行处理。
此外,CPU23a包括连接到SC21的系统总线控制器23a-3,系统总线控制器23a-3是线程23a-1和23a-2控制待由CPU23a通过系统总线22所执行的数据输入和输出的接口。换言之,系统总线控制器23a-3是在硬件线程23a-1和23a-2之间共享的输入/输出接口。
此外,如图1所示,唤醒信号生成单元27a包括休眠ID(SleepID)寄存器27a-1和27a-2、唤醒数据寄存器27a-3、比较单元27a-5和27a-6和与(AND)单元27a-7和27a-8。休眠标识符(SleepIdentification)被简写为休眠ID。休眠ID是标识硬件线程23a-1和23a-2的标识信息。在处理的执行期间,由于出现等待数据输入(wait-for-data-input),硬件线程23a-1和23a-2中止处理时,将休眠ID分别输出到相应的唤醒信号生成单元27a和27b。
对应于CPU23a的硬件线程23a-1的休眠ID寄存器27a-1、比较单元27a-5、与单元27a-7被提供。类似的,对应于CPU23a的硬件线程23a-2的休眠ID寄存器27a-2、比较单元27a-6、与单元27a-8被提供。
休眠ID寄存器是存储待被硬件线程23a-1输出到唤醒信号生成单元27a的休眠ID的寄存器。标识硬件线程23a-1的休眠ID从硬件线程23a-1中输出,经由系统总线控制器23a-3和SC21在系统总线22上传输,并被放置在休眠ID寄存器27a-1中。
类似的,休眠ID寄存器27a-2是存储待被硬件线程23a-2输出到唤醒信号生成单元27a的休眠ID的寄存器。标识硬件线程23a-2的休眠ID从硬件线程23a-2输出,经由系统总线控制器23a-3和SC21在系统总线22上传输,并被放置在休眠ID寄存器27a-2中。
标识包含在节点20中的CPU23a和23b的硬件线程的休眠ID在节点20的系统启动时,由SVP28预先通知给节点10的SVP18。SVP18在未示出的存储器中分别存储标识节点20的CPU23a和23b的硬件线程的休眠ID,即已经被SVP28通知的休眠ID,并且使节点10的CPU13a和13b的硬件线程可用。
另外,标识包含在节点20中的CPU23a和23b的硬件线程的休眠ID可被通知给节点10,以使硬件线程执行每一处理。另外,对于由硬件线程执行的处理,当出现等待数据输入时,可基于待放置在相应休眠ID寄存器中的休眠ID的输出,将休眠ID通知给节点10。所通知的休眠ID可通过例如SC11经由MAC14存储在本地存储器16a等中,从而使节点10的CPU13a和13b的硬件线程可用。
唤醒数据寄存器27a-3是放置包含在由节点10的CPU13a和13b经由IC-IF3和IC-ctrl25所通知的唤醒数据中的休眠ID的寄存器。唤醒数据是向节点20的CPU23a和23b通知由节点10的CPU13a和13b执行的预定处理已经完成的数据。预定处理是,例如节点10的CPU13a或13b的硬件线程将CPU23a的硬件线程23a-1或23a-2等待的数据从节点10的本地存储器16a拷贝到节点20的共享存储器26b的处理。
节点20的CPU23a和23b停止硬件线程,以等待由CPU23a和23b所执行的预定处理完成,并且当CPU13a和13b通知唤醒数据时,启动所停止的硬件线程。然后,CPU23a和23b经由系统总线控制器23a-3和SC21获取拷贝到共享存储器26b的数据,从而恢复被中止的处理。
比较单元27a-5对放置在唤醒数据寄存器27a-3和休眠ID寄存器27a-1中的休眠ID进行比较。当放置在唤醒数据寄存器27a-3与休眠ID寄存器27a-1中的休眠ID彼此一致时,比较单元27a-5输出选择信号到与单元27a-7。
与单元27a-7是逻辑门,其在节点10的CPU13a和13b通知唤醒数据时,将从比较单元27a-5中输出的选择信号与从IC-ctrl25中输出的包接收脉冲相与。当接收唤醒包时,IC-ctrl25生成一个包接收脉冲。
与单元27a-7向硬件线程23a-1输出表示选择信号和包接收脉冲相与的信号。换言之,当通知的休眠ID和放置在休眠ID寄存器27a-1中的休眠ID一致时,与单元27a-7将指令输出到硬件线程23a-1,从而取消停止、启动和恢复处理。根据所述指令,硬件线程23a-1取消停止、启动和恢复该处理。换言之,由包接收脉冲和选择信号的相与而生成的唤醒信号仅在一个脉冲内开启(turnon),以取消硬件线程23a-1的停止状态。
类似的,比较单元27a-6对放置在唤醒数据寄存器27a-3和休眠ID寄存器27a-2中的休眠ID进行比较。当放置在唤醒数据寄存器27a-3和休眠ID寄存器27a-2中的休眠ID彼此一致时,比较单元27a-6将选择信号输出到与单元27a-8。
与单元27a-8是逻辑门,其在节点10的CPU13a和13b通知唤醒数据时,将从比较单元27a-6输出的选择信号与从IC-ctrl25输出的包接收脉冲相与。与单元27a-8将表示选择信号和包接收脉冲相与的信号输出到硬件线程23a-2。换言之,当所通知的休眠ID与放置在休眠ID寄存器27a-2中的休眠ID一致时,与单元27a-8将指令输出到硬件线程23a-2,从而取消停止,启动和恢复该处理。根据所述指令,硬件线程23a-2取消停止,启动和恢复所述处理。
第一实施例的处理顺序
图2示出了根据第一实施例的处理顺序图。图2说明了以下示例:在处理执行期间,节点20的硬件线程23a-1需要节点10所保存的数据,并且等待直到节点10的CPU13a将该数据拷贝到节点20的共享存储器26b的处理完成。然而,图2仅仅说明示例。在处理执行期间,节点10或20的硬件线程等待,直到节点10或20的另一CPU的处理完成为止,处理都是类似的。
例如,首先,在信息处理装置1或节点20启动时,节点20的SVP28向节点10的SVP18通知包含在节点20中的所有硬件线程的休眠ID(步骤S11)。步骤S11是以下处理:在信息处理装置1或节点启动时,在执行硬件线程中的处理之前,节点的SVP向另一节点通知作为在其自身节点中的硬件线程的标识信息的休眠ID,等等。
接下来,节点20的硬件线程23a-1在唤醒信号生成单元27a的休眠ID寄存器27a-1中放置硬件线程23a-1的休眠ID(步骤S12)。接下来,硬件线程23a-1停止线程(步骤S13)。
另一方面,节点10的CPU13a执行将存储在节点10的本地存储器16a中的数据(节点20的硬件线程23a-1等待该数据的输入)拷贝到节点20的共享存储器26b的处理,并且完成该处理(步骤S14)。接下来,CPU13a发出包含硬件线程23a-1的休眠ID和CPU23a(包含硬件线程23a-1)的CPUID的唤醒命令,以输出到IC-ctrl15(步骤S15)。在步骤S15的处理中,CPU13a通知节点20的硬件线程23a-1所述处理完成。
接下来,如图3所示,根据CPU13a发出的唤醒命令,节点10的IC-ctrl15生成包括例如CPUID和唤醒数据的唤醒包,以传输到节点20的IC-ctrl25(步骤S16)。CPUID表示中央处理单元标识符,是标识CPU的信息。网络中继设备根据CPUID来确定包括作为传输目标的CPU的节点,从而唤醒包到达其目标节点。此外,唤醒数据是至少包括硬件线程23a-1的休眠ID的数据,在步骤S11中节点20的SVP28预先通知休眠ID。
当从IC-ctrl15接收到唤醒包时,IC-ctrl25将包含在唤醒数据中的休眠ID写入到唤醒数据寄存器27a-3,并且将包接收脉冲输出到与单元27a-7(步骤S17)。接下来,唤醒信号生成单元27a将唤醒信号输出到硬件线程23a-1(步骤S18)。接下来,当接收到唤醒信号时,硬件线程23a-1启动被停止的线程(步骤S19)。
第一实施例的处理的时间图
图4示出了根据第一实施例的处理的时间图。在图4中,假设CPU23a的硬件线程23a-1和23a-2交替使用系统总线控制器23a-3以输入和输出用于执行其各自的处理所需的数据。执行其各自的处理所需的数据是以下数据:例如,存储在本地存储器26a中的程序和存储在共享存储器26b中的数据。
图4说明了以下示例:其中,在处理执行期间,节点20的硬件线程23a-1需要节点10所保存的数据,并且等待直到节点10的CPU13a将该数据拷贝到节点20的共享存储器26b的处理完成。然而,图4仅仅说明示例。在处理执行期间,节点10或20的另一硬件线程等待直到节点10或20的另一CPU的处理完成时,所述处理是类似的。而且,在图4中可以看出,图解“1”对应于硬件线程23a-1访问系统总线控制器23a-3,图解“2”对应于硬件线程23a-2访问系统总线控制器23a-3,在所述图解的右侧是“系统总线控制器23a-3”。
在时刻t1,节点10的CPU13a启动将节点20的CPU23a的硬件线程23a-1为执行处理所需要的数据拷贝到节点20的共享存储器26b的处理。在时刻t2,硬件线程23a-1需要由CPU13a拷贝到共享存储器26b的数据,但是由于数据拷贝没有完成,因此不可能继续该处理,而进入等待数据的状态中。然后,硬件线程23a-1停止该线程。
当硬件线程23a-1停止该线程时,硬件线程23a-1对系统总线控制器23a-3的访问被停止,并且进入只被执行另一处理的硬件线程23a-2访问的占用状态。在时刻t3,当硬件线程23a-1一直等待的数据拷贝完成时,CPU13a发出启动硬件线程23a-1的唤醒命令。当硬件线程23a-1根据唤醒命令启动时,硬件线程23a-1恢复处理并且经由系统总线控制器23a-3获取拷贝到共享存储器26b的数据。
第一实施例的处理的流程图
图5示出根据第一实施例的处理的流程图。图5说明了在处理执行期间节点20的硬件线程23a-1需要节点10所保存的数据并且等待直到节点10的CPU13a将数据拷贝到节点20的共享存储器26b的处理完成的示例。然而,图5仅仅说明了示例。在处理执行期间,节点10或20的硬件线程等待直到节点10或20的另一CPU的处理完成时,所述处理是类似的。
首先,节点10使SVP18接收标识包含在节点20中的CPU23a和23b的硬件线程的休眠ID,所述休眠ID已经从节点20的SVP28传输(步骤S101)。步骤S101是以下处理:在信息处理装置1或节点启动时,在硬件线程中的处理执行之前,节点的SVP向另一节点预先通知作为在其自身节点中的硬件线程的标识信息的休眠ID,等等。
接下来,节点10使MAC14执行将CPU23a的硬件线程23a-1等待的、待被拷贝的数据(由节点10保存的数据)拷贝到节点20的共享存储器26b的处理(步骤S102)。步骤S102的处理可由提供给MAC14的未示出的DMA控制器来执行。
接下来,节点10使CPU13a确定步骤S102的处理是否结束(步骤S103)。当确定步骤S102的处理已经结束(步骤S103为是)时,节点10使该处理进入步骤S104。另一方面,当确定步骤S102的处理没有结束(步骤S103为否)时,节点10使该处理进入步骤S102并且通过MAC14或未示出的DMA控制器等继续步骤S102的处理。
接下来,节点10使CPU13a指定CPUID和休眠ID,并且发出唤醒命令(步骤S104)。此外,例如,节点20的CPU23a的ID被指定为CPUID,并且硬件线程23a-1的休眠ID被指定为休眠ID。接下来,根据在步骤S104中发出的唤醒命令,节点10使CPU13a生成唤醒包并且将该唤醒命令传输到节点20(步骤S105)。
另一方面,节点20使SVP28将标识包括在节点20中的CPU23a和23b的硬件线程的休眠ID传输到节点10的SVP18(步骤S201)。步骤S201是以下处理:在信息处理装置1或节点启动时,在硬件线程中的处理执行之前,节点的SVP向另一节点预先通知作为在其自身节点中的硬件线程的标识信息的休眠ID。
接下来,节点20使CPU23a和23b的硬件线程执行其各自的处理(步骤S202)。接下来,节点20使CPU23a和23b的硬件线程确定在步骤S202的处理执行期间是否等待在节点10中的步骤S102的处理完成(步骤S203)。
当确定结果为等待在节点10中的步骤S102中的处理完成时(步骤S203为是),节点20使处理进入步骤S204。当确定结果为不等待在节点10中的步骤S102中的处理完成时(步骤S203为否),节点20使处理进入步骤S202并且使硬件线程继续处理。此处,例如,已经确定为等待在节点10中的步骤S102的处理完成的硬件线程是硬件线程23a-1。
接下来,节点20使等待在节点10中的处理完成的硬件线程23a-1将硬件线程23a-1的休眠ID放置在休眠ID寄存器27a-1中(步骤S204)。接下来,节点20中止正被硬件线程23a-1执行的处理(下文中,被中止的处理被称为中止处理)并且停止该线程(步骤S205)。
接下来,节点20使唤醒信号生成单元27a确定是否已经从节点10接收了唤醒包(步骤S206)。当确定已经接收到来自节点10的唤醒包(步骤S206为是)时,节点20使该处理进入步骤S207。另一方面,当确定没有接收到唤醒包(步骤S206为否),节点20重复步骤S206。
接下来,节点20使唤醒信号生成单元27a将唤醒包的唤醒数据放置在唤醒数据寄存器27a-3中(步骤S207)。
接下来,节点20使比较单元27a-5确定休眠ID寄存器27a-1的值是否等于包含在唤醒数据寄存器27a-3的唤醒数据中的休眠ID(步骤S208)。当确定休眠ID寄存器27a-1的值等于包含在唤醒数据寄存器27a-3的唤醒数据中的休眠ID(步骤S208为是)时,节点20使处理进入步骤S209。当确定休眠ID寄存器27a-1的值不等于包含在唤醒数据寄存器27a-3的唤醒数据中的休眠ID(步骤S208为否)时,节点20使该处理进入步骤S206。
接下来,节点20使与单元27a-7生成输出到硬件线程23a-1的唤醒信号(步骤S209)。接下来,节点20使硬件线程23a-1响应于唤醒信号的输出启动在步骤S205中被停止的硬件线程(步骤S210),并且恢复中止处理(步骤S211)。
第一实施例的效果
与以预定周期使用CPU资源的轮询系统相比,当CPU中共享系统总线控制器的部分硬件线程被停止时,其他的硬件线程可占用诸如系统总线控制器等CPU资源。因此,其他的硬件线程可执行更多的处理。此外,在恢复处理时,不需要进行通过操作系统处理的寄存器保存和恢复处理,因此,与中断系统相比,可以缩短启动硬件线程和恢复处理所需的时间。此外,对于硬件线程休眠ID是不变的,以使指令能够启动硬件线程,而不用在处理之间通知休眠ID。
此外,休眠ID被指定来通知唤醒信号,因此,可以在特定的硬件线程上启动和停止处理。因此,可以防止错误的处理启动和停止。此外,CPUID被指定来启动硬件线程的处理,因此,可以控制在CPU之间的通信的同步化。
[b]第二实施例
关于根据第二实施例的信息处理装置的元件,将相同的名称和附图标记分配给与根据第一实施例的信息处理装置的功能和处理的相同的元件,因此其说明将被忽略,而将仅仅说明具有不同功能和处理的元件。
第二实施例的信息处理装置的配置
图6是示出根据第二实施例的信息处理装置的配置的框图。如图6所示,第二实施例的信息处理装置2包括节点30和40。与根据第一实施例的信息处理装置1的节点10相比,节点30包括唤醒信号生成单元37a和38a,代替唤醒信号生成单元17a。此外,节点30包括唤醒信号生成单元37b和38b,代替唤醒信号生成单元17b。
节点40具有与节点30相同的配置,并且具有不同附图标记和相同名称的元件具有相同的配置和功能。与根据第一实施例的信息处理装置1的节点20相比,节点40包括唤醒信号生成单元47a和48a,代替唤醒信号生成单元27a。此外,节点40包括唤醒信号生成单元47b和48b,代替唤醒信号生成单元27b。
第二实施例的唤醒信号生成单元的配置
将以唤醒信号生成单元47a作为代表来给出唤醒信号生成单元37a,37b,47a和47b的配置的说明。换言之,唤醒信号生成单元37a,37b和47b与唤醒信号生成单元47a的配置相同。
如图6所示,唤醒信号生成单元47a包括休眠ID寄存器27a-1、唤醒数据寄存器27a-3、比较单元27a-5、与单元27a-7、定时器27a-9和或(OR)单元27a-11。对应于硬件线程23a-1的唤醒信号生成单元47a被提供。类似地,对应于硬件线程23a-2的唤醒信号生成单元48a被提供。类似地,对应于包含在CPU23b中的硬件线程的唤醒信号生成单元47b和48b被提供。
CPU13a,13b,23a和23b的硬件线程读取其相应的唤醒数据寄存器中的内容。当接收到的唤醒数据与在唤醒信号生成单元37a到48b中其各自的唤醒信号生成单元的休眠ID寄存器中的休眠ID一致时,将休眠ID写入到其各自的唤醒数据寄存器中。因此,当多个硬件线程处于等待处理的状态时,硬件线程存取其相应的唤醒数据寄存器,这能够确认到其自身的硬件线程的唤醒数据的接收。此外,在写入唤醒数据寄存器的唤醒数据被其相应的硬件线程读取之前,防止唤醒数据寄存器使用到其他硬件线程的唤醒数据进行更新。
定时器27a-9为以下定时器:在处理执行期间,因出现等待数据输入,硬件线程23a-1基于中止处理而输出硬件线程23a-1的休眠ID时,该定时器通过系统总线22设置定时器值。当预定的定时器值被设置时,定时器27a-9以预定的时间间隔来减去定时器值,并且当定时器值变为0时,将开启(ON)信号输出给或单元27a-11。
在第二实施例中,与单元27a-7向或单元27a-11输出表示从比较单元27a-5输出的选择信号和从IC-ctrl25输出的包接收脉冲的相与的信号。或单元27a-11是将表示从与单元27a-7输出的与信号和从定时器27a-9中输出的开启信号相或的逻辑门。换言之,当定时器27a-9计时了预定时间时,或单元27a-11将指令输出给硬件线程23a-1以取消停止,开启和恢复该处理。或者,当所通知的休眠ID与放置在休眠ID寄存器27a-1中的休眠ID一致时,或单元27a-11将指令输出给硬件线程23a-1,以取消停止,启动和恢复该处理。根据该指令,硬件线程23a-1取消停止,启动和恢复该处理。
类似的,包含在唤醒信号生成单元48a中的定时器为以下定时器:在处理执行期间,因出现等待数据输入中止处理,硬件线程23a-2输出硬件线程23a-2的休眠ID时,该定时器设置定时器值。当预定的定时器值被设置时,包含在唤醒信号生成单元48a中的定时器以预定的时间间隔减去定时器值,并且当定时器值变为0时,将开启信号输出到包含在唤醒信号生成单元48a中的或单元。
第二实施例的处理
图7是示出根据第二实施例的处理的流程图。图7说明了以下示例:在处理执行期间,节点40的硬件线程23a-1需要节点30所保存的数据,并且等待直到节点30的CPU13a将数据拷贝到节点40的共享存储器26b的处理完成。然而,图7仅仅说明了示例。在处理执行期间当节点30或40的硬件线程等待直到节点30或40的另一CPU的处理完成时,所述处理是类似的。
在图7中,节点30中的处理与在图5中说明的第一实施例的节点10中的处理相同,因此,该说明被忽略了。另一方面,节点40使SVP28向节点30的SVP18传输休眠ID,所述休眠ID通知包含在节点40中的CPU23a和23b的硬件线程(步骤S401)。步骤S401是以下过程:在信息处理装置2或节点启动时,在硬件线程中的处理执行之前,节点的SVP向另一节点预先通知作为在其自身的节点中的硬件线程的标识信息的休眠ID,等等。
接下来,在CPU23a和23b的硬件线程中,节点40执行其各自的处理(步骤S402)。接下来,节点40使CPU23a和23b的硬件线程确定在步骤S402的处理执行期间是否等待在节点30中的步骤S102的处理完成(步骤S403)。
当确定结果为等待在节点30中的步骤S102的处理完成(步骤S403为是)时,节点40使该处理进入到步骤S404。当确定结果为不等待在节点30中的步骤S102的处理完成(步骤S403为否)时,节点40使该处理进入步骤S402,并且使硬件线程继续执行处理。此处,例如,已经确定等待在节点30中的步骤S102的处理完成的硬件线程是硬件线程23a-1。
接下来,节点40使等待处理完成的硬件线程23a-1将硬件线程23a-1的休眠ID放置在休眠ID寄存器27a-1中,并且设置定时器27a-9中的定时器值(步骤S404)。接下来,节点40中止正在被硬件线程23a-1执行的处理(下文中被中止的处理被称为中止处理)并且停止该线程(步骤S405)。接下来,节点40使唤醒信号生成单元47a执行稍后参考图8所说明的唤醒信号开启处理(步骤S406)。
接下来,节点40确定唤醒信号生成单元47a是否已经开启唤醒信号(步骤S407)。当确定唤醒信号已经开启(步骤S407为是)时,节点40启动在步骤S405中被停止的硬件线程23a-1(步骤S408)。当确定唤醒信号未开启(步骤S407为否)时,节点40使处理进入步骤S406。
接下来,节点40使硬件线程23a-1确定其自身的线程的休眠ID是否已经放置在唤醒数据寄存器27a-3中(步骤S409)。当确定其自身的线程的休眠ID已经放置在唤醒数据寄存器27a-3中(步骤S409为是)时,硬件线程23a-1恢复中止处理(步骤S410)。当确定其自身的线程的休眠ID没有被放置在唤醒数据寄存器27a-3中(步骤S409为否)时,硬件线程23a-1进行处理切换(步骤S411)。然后硬件线程23a-1执行不同于中止处理的另一处理(步骤S412)。
接下来,硬件线程23a-1确定其自身线程的休眠ID是否已经被放置在唤醒数据寄存器27a-3中(步骤S413)。当确定其自身线程的休眠ID已经被放置在唤醒数据寄存器27a-3中(步骤S413为是)时,硬件线程23a-1切换处理(步骤S414),并且恢复中止处理(步骤S410)。当确定其自身线程的休眠ID没有被设置在唤醒数据寄存器27a-3中(步骤S413为否)时,硬件线程23a-1通过轮询处理而重复步骤S413。
第二实施例的唤醒信号开启处理的流程图
图8是示出根据第二实施例的唤醒信号开启处理的流程图。根据第二实施例的唤醒信号开启处理是在图7的步骤S406中说明的处理。
节点40使唤醒信号生成单元47a确定定时器27a-9是否已经超时(步骤S406a)。当确定定时器27a-9已经超时(步骤S406a为是),节点40使唤醒信号生成单元47a开启唤醒信号(步骤S406e)。另一方面,当确定定时器27a-9没有超时(步骤S406a为否)时,节点40使唤醒信号生成单元47a确定是否已经从节点3接收唤醒包(步骤S406b)。
当确定已经从节点30接收到唤醒包(步骤S406b为是)时,节点40使处理进入步骤S406c。另一方面,当确定没有从节点30接收到唤醒包(步骤S406b为否)时,节点40使处理进入步骤S406a。
接下来,节点40使比较单元27a-5确定休眠ID寄存器27a-1的值是否等于包含在所接收的唤醒数据中的休眠ID(步骤S406c)。当确定休眠ID寄存器的值等于包含在接收到的唤醒数据中的休眠ID(步骤S406c为是)时,节点40使处理进入步骤S406d。当确定休眠ID寄存器的值不等于包含在接收到的唤醒数据中的休眠ID(步骤S406c为否)时,节点40使处理进入步骤S406a。
接下来,节点40使唤醒信号生成单元47a将接收到的唤醒包的唤醒数据放置在唤醒数据寄存器27a-3中(步骤S406d)。接下来,节点40使唤醒信号生成单元47a开启输出到硬件线程23a-1的唤醒信号(步骤S406e)。当步骤S406e的处理结束时,节点40使处理进入在图7中示出的步骤S407。
第二实施例的效果
当在固定的时间段内执行某一处理时,操作系统切换到另一处理执行,因此,当线程停止较长时间,甚至当接收到启动指令时,处理可能超时而自动地切换到非预期的另一处理。因此,可以通过在处理切换之前使用定时器启动硬件线程,来防止操作系统将正在运行的处理切换到另一处理。
此外,处理可以结合定时器和唤醒数据寄存器,通过将所执行的处理从正在运行的处理切换到下一个希望执行的处理来管理处理的切换。
在第一和第二实施例中,硬件线程的停止状态被设置为第一状态,并且硬件线程的运行状态被设置为第二状态。假设已经写入节点所保存的数据并且已写入结束的另一节点的硬件线程,向等待数据写入结束且处于第一状态的硬件线程通知该结束。假设响应于该通知,硬件线程从第一状态转换到第二状态。然而,本公开的技术不限于第一状态是硬件线程的停止状态并且第二状态是硬件线程的运行状态的情形。换言之,本公开的技术可被广泛地应用于以下技术:当硬件线程处于第一状态直到在其自身节点或另一节点的硬件线程上运行的处理转换到期望的状态时,指定硬件线程,通知到期望状态的转换,并且从第一状态转换到第二状态。
在第一和第二实施例中的信息处理装置1和2中所包括的节点数目、在每一节点中所包括的CPU的数目、以及在每一个CPU中所包括的硬件线程的数目可任意地改变。此外,对应于每一硬件线程所提供的唤醒信号生成单元可被提供给每一CPU如第一实施例的情形,或被提供给每一硬件线程如第二实施例的情形。
当包括在多个节点中的处理器控制在其各自的处理单元中执行的处理之间的同步时,可促进硬件资源的有效使用。
Claims (6)
1.一种信息处理装置,所述信息处理装置包括多个节点,其中,每一节点包括:
处理单元,所述处理单元执行处理并且控制所述处理的状态;
存储单元,当所述处理单元将所述处理的状态从第一状态转换到第二状态时,所述存储单元存储标识所述处理单元的标识信息;
接收单元,所述接收单元接收所述标识信息,所述标识信息在存储在所述存储单元之前由所述处理单元预先通知包括在所述处理单元所处的节点中的另一处理单元或在另一节点中的另一处理单元,其中所述另一处理单元执行处理,所述处理单元等待所述处理的完成,并且在由所述另一处理单元完成所述处理时从所述另一处理单元传输所述标识信息;以及
输出单元,当由所述接收单元接收到的标识信息与存储在所述存储单元中的标识信息一致时,所述输出单元输出控制信号,所述控制信号将所述处理的状态从第二状态转换到第一状态。
2.如权利要求1所述的信息处理装置,其中,每一节点还包括:
定时单元,所述定时单元对从预定定时所消逝的时间进行计时;以及
当所述定时单元从所述预定定时计时了预定时间时,不管所述接收单元是否已经接收到标识信息,所述输出单元生成并且输出控制信号。
3.如权利要求2所述的信息处理装置,其中,当所述定时单元计时了预定时间时,一旦接收到由所述输出单元输出的控制信号,则所述处理单元响应于所述控制信号执行与作为待被转换状态的对象的处理不同的处理。
4.如权利要求1所述的信息处理装置,其中,
所述第一状态是所述处理单元正在执行处理的状态,并且
所述第二状态是所述处理单元正在停止处理的状态。
5.如权利要求1到4中的任何一项所述的信息处理装置,其中,所述接收单元经由在节点之间的通信接口来接收所述标识信息。
6.一种控制信息处理装置的方法,所述信息处理装置包括多个节点,其中,每一节点包括执行处理和控制所述处理的状态的处理单元,所述方法包括:
当所述处理单元将所述处理的状态从第一状态转换到第二状态时,在存储单元中存储标识所述处理单元的标识信息;
接收所述标识信息,所述标识信息在存储在所述存储单元之前由所述处理单元预先通知包括在所述处理单元所处的节点中的另一处理单元或在另一节点中的另一处理单元,其中所述另一处理单元执行处理,所述处理单元等待所述处理的完成,并且在由所述另一处理单元完成所述处理时从所述另一处理单元传输所述标识信息;
当在所述接收时接收到的标识信息与存储在所述存储单元中的标识信息一致时,输出将所述处理的状态从所述第二状态转换到所述第一状态的控制信号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011290026A JP5819184B2 (ja) | 2011-12-28 | 2011-12-28 | 情報処理装置及び情報処理装置の制御方法 |
JP2011-290026 | 2011-12-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103197954A CN103197954A (zh) | 2013-07-10 |
CN103197954B true CN103197954B (zh) | 2016-08-03 |
Family
ID=47471476
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210500756.3A Expired - Fee Related CN103197954B (zh) | 2011-12-28 | 2012-11-29 | 信息处理装置和控制信息处理装置的方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US9652299B2 (zh) |
EP (1) | EP2610747A3 (zh) |
JP (1) | JP5819184B2 (zh) |
KR (1) | KR101472186B1 (zh) |
CN (1) | CN103197954B (zh) |
TW (1) | TWI469056B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101500355B1 (ko) | 2013-07-01 | 2015-03-09 | 현대자동차 주식회사 | 하이브리드 자동차의 동력전달장치 |
CN104933689B (zh) * | 2014-03-19 | 2018-01-16 | 炬芯(珠海)科技有限公司 | 一种图像信号处理方法及装置 |
CN106569897B (zh) * | 2016-11-07 | 2019-11-12 | 许继集团有限公司 | 基于协作式多任务调度机制的共享总线的轮询方法与装置 |
CN110704112B (zh) * | 2019-08-30 | 2021-04-02 | 创新先进技术有限公司 | 在区块链中并发执行交易的方法和装置 |
CN111475213B (zh) * | 2020-04-03 | 2023-04-28 | 深圳忆联信息系统有限公司 | 多核结构固态硬盘的功耗降低方法、装置和计算机设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19620622A1 (de) | 1996-05-22 | 1997-11-27 | Siemens Ag | Verfahren zur Synchronisation von Programmen auf unterschiedlichen Computern eines Verbundes |
US6192391B1 (en) | 1997-05-30 | 2001-02-20 | Nec Corporation | Process stop method and apparatus for a distributed memory multi-processor system |
EP1217517A1 (en) | 2000-12-22 | 2002-06-26 | Sun Microsystems, Inc. | Synchronizing calls in a server and client system |
US6978459B1 (en) | 2001-04-13 | 2005-12-20 | The United States Of America As Represented By The Secretary Of The Navy | System and method for processing overlapping tasks in a programmable network processor environment |
US7363474B2 (en) | 2001-12-31 | 2008-04-22 | Intel Corporation | Method and apparatus for suspending execution of a thread until a specified memory access occurs |
JP2003330739A (ja) * | 2002-05-10 | 2003-11-21 | Nec Corp | 通信応答同期システム及び方法並びに通信応答同期プログラム |
US8074051B2 (en) * | 2004-04-07 | 2011-12-06 | Aspen Acquisition Corporation | Multithreaded processor with multiple concurrent pipelines per thread |
GB2414573B (en) * | 2004-05-26 | 2007-08-08 | Advanced Risc Mach Ltd | Control of access to a shared resource in a data processing apparatus |
TWI326428B (en) * | 2005-03-18 | 2010-06-21 | Marvell World Trade Ltd | Real-time control apparatus having a multi-thread processor |
US8195922B2 (en) * | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
US7398371B2 (en) * | 2005-06-23 | 2008-07-08 | Qualcomm Incorporated | Shared translation look-aside buffer and method |
US8056087B2 (en) * | 2006-09-25 | 2011-11-08 | International Business Machines Corporation | Effective use of a hardware barrier synchronization register for protocol synchronization |
US20090064166A1 (en) * | 2007-08-28 | 2009-03-05 | Arimilli Lakshminarayana B | System and Method for Hardware Based Dynamic Load Balancing of Message Passing Interface Tasks |
US8312458B2 (en) | 2008-02-01 | 2012-11-13 | International Business Machines Corporation | Central repository for wake-and-go mechanism |
JP5644060B2 (ja) * | 2009-03-27 | 2014-12-24 | トヨタ自動車株式会社 | データ処理装置 |
US8578382B2 (en) * | 2009-05-19 | 2013-11-05 | Qualcomm Incorporated | Associating data for events occurring in software threads with synchronized clock cycle counters |
US8397238B2 (en) * | 2009-12-08 | 2013-03-12 | Qualcomm Incorporated | Thread allocation and clock cycle adjustment in an interleaved multi-threaded processor |
US8700943B2 (en) * | 2009-12-22 | 2014-04-15 | Intel Corporation | Controlling time stamp counter (TSC) offsets for mulitple cores and threads |
US8490118B2 (en) * | 2010-12-02 | 2013-07-16 | Microsoft Corporation | Wait on address synchronization interface |
-
2011
- 2011-12-28 JP JP2011290026A patent/JP5819184B2/ja active Active
-
2012
- 2012-10-17 US US13/653,501 patent/US9652299B2/en active Active
- 2012-10-29 TW TW101139934A patent/TWI469056B/zh not_active IP Right Cessation
- 2012-11-07 EP EP12191585.4A patent/EP2610747A3/en not_active Withdrawn
- 2012-11-16 KR KR1020120130289A patent/KR101472186B1/ko not_active IP Right Cessation
- 2012-11-29 CN CN201210500756.3A patent/CN103197954B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1716186A (zh) * | 2004-06-30 | 2006-01-04 | 英特尔公司 | 使用睡眠-唤醒机制的比较和交换操作 |
Also Published As
Publication number | Publication date |
---|---|
CN103197954A (zh) | 2013-07-10 |
KR20130076703A (ko) | 2013-07-08 |
TW201327403A (zh) | 2013-07-01 |
EP2610747A3 (en) | 2014-03-19 |
JP2013140447A (ja) | 2013-07-18 |
TWI469056B (zh) | 2015-01-11 |
KR101472186B1 (ko) | 2014-12-12 |
US20130174161A1 (en) | 2013-07-04 |
US9652299B2 (en) | 2017-05-16 |
JP5819184B2 (ja) | 2015-11-18 |
EP2610747A2 (en) | 2013-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8145820B2 (en) | Multiprocessor system and computer program product | |
CN103197954B (zh) | 信息处理装置和控制信息处理装置的方法 | |
US20160306647A1 (en) | Method for affinity binding of interrupt of virtual network interface card, and computer device | |
US10884786B2 (en) | Switch device, switching method, and computer program product | |
US11537430B1 (en) | Wait optimizer for recording an order of first entry into a wait mode by a virtual central processing unit | |
EP2816467A2 (en) | Method and device for checkpoint and restart of container state | |
EP2128759B1 (en) | Operating system startup control method and information processing apparatus | |
US20110107344A1 (en) | Multi-core apparatus and load balancing method thereof | |
WO2018096313A1 (en) | Data processing | |
US10481957B2 (en) | Processor and task processing method therefor, and storage medium | |
JP2005267118A (ja) | シングルプロセッサ向けosによる並列処理システムにおけるプロセッサ間通信システム及びプログラム | |
JP2014106660A (ja) | 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法 | |
JP3387464B2 (ja) | 通信制御システムとその制御方法 | |
US9015717B2 (en) | Method for processing tasks in parallel and selecting a network for communication | |
US20120096245A1 (en) | Computing device, parallel computer system, and method of controlling computer device | |
KR100921504B1 (ko) | 다중 프로세서를 구비한 시스템 온 칩 시스템 내의프로세서간 통신 장치 및 방법 | |
JP2014078266A (ja) | マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法、およびマルチコアプロセッサシステムの制御プログラム | |
JP6251112B2 (ja) | 伝送装置およびコントローラ | |
JPH11338523A (ja) | プログラマブルコントローラにおける入出力制御方式 | |
KR101638259B1 (ko) | 멀티코어 기반의 통신 데이터 처리를 위한 장치 및 이를 이용하여 중앙처리장치의 부하를 감소하는 방법 | |
JPH05134980A (ja) | バスシステム | |
JP2008276321A (ja) | 情報処理システムおよび情報処理方法 | |
JPS58168170A (ja) | 多重プロセツサ | |
JP2000132206A (ja) | プログラマブルロジックコントローラ | |
KR20150077350A (ko) | 클러스터 시스템에서 클러스터를 처리하기 위한 방법과 장치 및 시스템 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20161129 |