CN100340975C - 计算机系统、编译器装置以及编译方法 - Google Patents

计算机系统、编译器装置以及编译方法 Download PDF

Info

Publication number
CN100340975C
CN100340975C CNB2004100685838A CN200410068583A CN100340975C CN 100340975 C CN100340975 C CN 100340975C CN B2004100685838 A CNB2004100685838 A CN B2004100685838A CN 200410068583 A CN200410068583 A CN 200410068583A CN 100340975 C CN100340975 C CN 100340975C
Authority
CN
China
Prior art keywords
thread
instruction
processor
cache memory
looking ahead
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
Application number
CNB2004100685838A
Other languages
English (en)
Other versions
CN1591325A (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.)
Socionext Inc
Original Assignee
Matsushita Electric Industrial Co Ltd
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 Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN1591325A publication Critical patent/CN1591325A/zh
Application granted granted Critical
Publication of CN100340975C publication Critical patent/CN100340975C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6028Prefetching based on hints or prefetch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

用于计算机系统的编译器装置,可以提高高速缓冲存储器的命中率,该编译器装置由预取目标提取装置、线程激活过程插入装置、以及线程过程生成装置构成,并且生成用于执行预取和预清除的线程。由该编译器装置生成的预取和预清除线程通过考虑程序的优先级以及高速缓冲存储器的使用率,与主程序的操作并行地执行预取和预清除。

Description

计算机系统、编译器装置以及编译方法
技术领域
本发明涉及一种计算机系统、编译器装置以及操作系统,特别是涉及一种具有高速缓冲存储器的计算机系统以及用在所述计算机系统中的编译器装置和操作系统。
背景技术
近年来在处理器的计算速度方面已经有了显著的提高,但是与处理器相比对主存储器的存取速度还没有得到提高。由于读/写指令或数据所引起的存取主存储器时的等待时间,处理器与主存储器的处理速度之间扩大的差距对于处理器的性能改进有着不利的影响。
为了减少在存储器存取时的等待时间,近来的处理器除了主处理器,还配备有低容量存储器,称为高速缓冲存储器,对该存储器可以进行相对高速的存取。在具有这种配置的计算机中,可以在高速缓冲存储器上存储某些存储在主存储器中的指令或数据。因此,当处理器访问主存储器时可以减少所发生的等待时间,从而避免处理器的性能受等待时间的影响。
当处理器存取主存储器时如果在高速缓冲存储器上存在着目标指令或数据,则该处理器可以以比在存取主存储器的情况下少的等待时间来读/写该目标指令或数据。另一方面,如果在高速缓冲存储器上不存在目标指令或数据,则该处理器在向高速缓冲存储器传送存储在包括所述目标指令或数据的存储器中的某些指令或数据之后,从高速缓冲存储器中读或向其写该目标指令或数据。从主存储器向高速缓冲存储器传送数据需要花费很多时间,但是在通常的程序序列中,极有可能是处理器在对主存储器上的某一地址进行存取之后的某一时间周期访问邻近的地址。由于这一事实,与直接对主存储器进行存取相比,如果处理器在向高速缓冲存储器传送指令或数据之后再对主存储器进行存取,则有可能减少等待时间。
但是,当在高速缓冲存储器上不存在目标指令/数据时,处理器的处理在从主存储器向高速缓冲存储器传送指令/数据的同时需要被挂起,因此处理器的性能被降低。为了避免这种性能的降低,提出了各种回避高速缓存未命中的方法。
例如,公开了一种技术,其中在编译源程序时插入预取指令到一部分源程序中,并且在执行该指令之前将必要的指令或数据从主存储器传送至高速缓冲存储器(例如,参见日本已公开专利申请No.11-212802(图2)或日本已公开专利申请No.11-306028(图1))。
然而,在上述方法中,当不考虑高速缓冲存储器的状态而执行一个程序时,毫无例外地要执行在编译时插入的预取指令。这会导致一个问题,即在多任务执行环境中,由具有较高优先级的程序所使用的指令和数据会由于具有较低优先级的程序所使用的指令和数据已被预取而被清洗,因此高速缓存命中率降低。
此外,即使是由具有较低优先级的程序所使用的指令或数据被预取,在执行具有较高优先级的程序时,该由具有较低优先级的程序所使用的程序或指令也被清洗,这导致另外一个问题就是执行这种预取白费了。
发明内容
本发明为了解决上述问题而构想,并且本发明的一个目的是提供一种能够改进高速缓存命中率的计算机系统、编译器装置、以及操作系统。
此外,本发明还有一个目的是提供一种可以防止高速缓冲存储器执行不必要的预取的计算机系统、编译器装置、以及操作系统。
根据本发明的计算机系统是一种包括以下部件的计算机系统:高速缓冲存储器,存储有一个或多个存储在主存储器中的指令和数据;以及高速缓存控制单元,用于控制高速缓冲存储器,其中所述高速缓存控制单元测量高速缓冲存储器的使用率,并根据所述测量的使用率来控制高速缓冲存储器。
上述配置使得由处理器执行的程序知道高速缓冲存储器的使用率。因此,使得该程序可以在例如高速缓冲存储器的使用率较高时执行不进行预取的处理。这样,可以回避由具有较高优先级的程序所使用的指令或数据被从高速缓冲存储器中清洗,从而可以增加高速缓冲存储器的命中率。
优选的是,所述高速缓存控制单元具有一个计数器,其测量高速缓冲存储器中用于指定所述使用率的有效入口项(entry)的数量。
该配置使得可以在逐行或逐个入口项的基础上管理高速缓冲存储器的使用状态,并通过程序控制存储器的存取。
根据本发明的另一个方面的计算机系统,为一个包括以下部件的计算机系统:多个高速缓冲存储器,对应于多个处理器中的各个处理器并且存储有存储在主存储器中的一个或多个指令和数据;多个高速缓存控制单元,对应于多个高速缓冲存储器中的各个高速缓冲存储器;以及一个处理器间通信单元,用于使多个处理器互连,并且在从多个处理器中的第一处理器接收到操作一个对应于不同于第一处理器的第二处理器的高速缓冲存储器的命令后,输出一个操作所述高速缓冲存储器的命令给对应于第二处理器的高速缓存控制单元,其中多个高速缓存控制单元根据来自处理器间通信单元的命令操作各个高速缓冲存储器。优选的是,该计算机系统进一步包括处理器识别单元,用于识别一个正执行程序的处理器,其中在接收到用于识别第二处理器的信息后,第一处理器向所述处理器间通信单元发送基于该识别第二处理器的信息操作对应于第二处理器的高速缓冲存储器的命令。
该处理器间通信单元允许一个处理器控制由其他处理器使用的高速缓冲存储器。
优选的是,处理器识别单元被实现作为机器语言指令,其返回分配给多个处理器中的各个处理器的唯一号。
该结构使得可以简便的在程序上控制多个高速缓冲存储器。
优选的是,处理器间通信单元在接收到来自第一处理器的命令之后,发送预清除(prepurge)指令或预取指令给对应于第二处理器的高速缓冲存储器。
即使是对具有多个处理器及对应的高速缓冲存储器的结构来说,该结构也允许有效的利用高速缓冲存储器,并因此避免了处理器性能的降低。
此外,根据本发明的再一个方面的编译器装置是一个将以高级语言编写的源程序转换成可执行程序的编译器装置,包括:预取目标提取单元,用于对源程序中的每个预定执行组提取将从主存储器向高速缓冲存储器预取的指令或数据,并产生一个列出所提取指令或数据的地址的地址列表;以及一个线程过程生成单元,用于(i)分析源程序中每个执行组的控制结构,(ii)根据分析的结果从所述地址列表中选择将被预取的指令或数据的地址,以及(iii)生成用于预取存储在由所选择的地址指定的位置中的指令或数据的预取线程。
利用上述结构,除了主任务外还生成预取线程。通过添加预取线程到源程序中,使得可以有效利用高速缓冲存储器。
优选的是,该线程过程生成单元检查激活所述线程过程生成单元的任务的优先级,并且当在任何一个处理器上都没有执行比所述优先级更高优先级的任务时生成用于执行预取的预取线程。
根据上述结构,如果一个已激活预取线程的任务的优先级是所有任务中最高的,则允许执行预取。因此任何情况下都不会发生具有较高优先级的任务的指令或数据被具有较低优先级的任务清除的情况,这使得增加了高速缓冲存储器的命中率。
更优选的是,线程过程生成单元只在高速缓冲存储器的使用率等于或低于一指定值的时候才生成用于执行预取的预取线程。
通过仅在高速缓冲存储器的使用率等于或低于一预定值时执行预取,使得可以在高速缓冲存储器的使用率较高时不执行任何预取。因此,任何情况下都不会发生执行不必要的预取的情况,这是由于具有较低优先级的程序的指令或数据已被预取从而由具有较高优先级的程序所使用的指令或数据被从高速缓冲存储器中清除的缘故。
优选的是,该编译器装置进一步包括预取计时确定单元,用于基于在执行感兴趣的组中的指令所需的执行时间以及与下一个执行组中的所述预取指令和数据有关的时间,确定应当在源程序上开始预取的预取开始时间,所述预取开始时间允许在下一执行组开始执行指令之前完成所述预取的执行,其中所述线程激活插入单元在由预取计时确定单元确定的对源程序的预取开始时间插入一个激活用于预取下一执行组中的指令或数据的预取线程的过程。
通过在该时间插入一个预取线程,该预取将在下一执行组开始执行之前已经完成。因此,可以增加高速缓冲存储器的命中率,并且获得高速的处理。
根据本发明再一个方面的操作系统是一个可以进行多任务处理的操作系统,该操作系统使得一个计算机可以用作:高速缓存使用率监控单元,用于监控高速缓冲存储器的使用率;和任务控制单元,用于根据高速缓冲存储器的使用率来控制由一个处理器所执行的任务的执行序列。
因此,可以改变由所述处理器执行的任务的序列。这样,通过以优先的方式执行具有较高优先级的任务,当高速缓冲存储器的使用率较高时,可以增加该高速缓冲存储器的命中率并提高程序的执行速度。
优选的是,该操作系统进一步使得所述计算机用作:优先级检查单元,用于检查是否存在一个具有比正被处理器执行的任务的优先级高的任务,其中当高速缓冲存储器的使用率大于一预定阈值时,任务控制单元增加执行频率,以便具有较高优先级的任务的执行频率变得比高速缓冲存储器的使用率等于或低于所述预定阈值的情况高。
因此,通过当高速缓冲存储器的使用率较高时执行具有较低优先级的任务,可以避免具有较高优先级的指令或数据被废除。
根据本发明的另一个方面的操作系统是一种用于配有多个处理器的计算机系统的操作系统,其中该计算机系统具有多个与所述多个处理器中的各个处理器对应的高速缓冲存储器,并且该操作系统使得计算机用作:高速缓存使用率监控单元,用于监控多个高速缓冲存储器中的各个高速缓冲存储器的使用率;和任务控制单元,用于根据多个高速缓冲存储器中的各个高速缓冲存储器的使用率来控制任务的执行序列。优选的是,任务控制单元优先分配一个任务给对应于其使用率是所有高速缓冲存储器中最低的高速缓冲存储器的处理器。
该结构使得可以分配任务给其使用率较低的处理器,因此提高了整个计算机的性能。
优选的是,该操作系统进一步使得计算机用作:优先级检查单元,用于检查是否存在一个具有比正被多个处理器中的每个处理器执行的每个任务的优先级高的任务,其中当多个高速缓冲存储器中的各个高速缓冲存储器的所有使用率都大于一预定阈值时,任务控制单元增加执行频率,以便具有较高优先级的任务的执行频率变得高于高速缓冲存储器的使用率等于或低于所述预定阈值的情况。
该结构甚至允许一个多处理器系统在逐个任务的基础上考虑任务的优先级来控制多个高速缓冲存储器。
应当注意本发明不仅可以体现为如上所述的计算机系统,编译器装置和操作系统,还可以体现为编译器和包括特征指令的程序。还应当注意,这种程序可以分配在诸如光盘只读存储器(CD-ROM)的记录介质上或通过诸如互联网的传输介质分配。
根据本发明,可以:提高高速缓冲存储器的命中率;防止高速缓冲存储器执行不必要的预取;从处理器上执行的程序控制存储器的存取;在多处理器计算机系统中允许一个处理器控制被其他处理器使用的高速缓冲存储器;有效地利用高速缓冲存储器并防止处理器的性能下降,即使是在具有多个处理器和对应的高速缓冲存储器的情况下;防止具有较高优先级的任务的指令或数据被从高速缓冲存储器中清洗;通过使用上述编译器装置,可以使程序员在不需要知道存在高速缓冲存储器的情况下开发用于执行预取的程序,这有利于开发具有高执行速度的程序;并且允许具有较高优先级的任务有效地利用高速缓冲存储器,因而有利于开发具有高执行速度的程序。
2003年8月29日申请的日本专利申请No.2003-306437的公开内容,包括说明书、附图和权利要求书,整体插入在此作为参考。
附图说明
本发明的这些和其他目的、优点及特征从以下结合附图的描述中将变得更加明显,附图中说明了本发明的具体实施例。在所述附图中:
附图1是表示根据本发明的第一实施例的计算机系统的硬件结构图;
附图2是说明高速缓冲存储器中的存储位置的图;
附图3是说明构成图2所示的高速缓冲存储器的入口项的详细情况图;
附图4是表示一存储器控制器的原理图;
附图5是表示由存储器控制器执行的操作的流程图;
附图6A是说明一预取指令的图;
附图6B是说明一预清除指令的图;
附图7是表示用在根据本发明的第一实施例的计算机系统中的操作系统的配置图;
附图8是表示产生将由计算机系统中的CPU执行的程序的编译器装置的结构图;
附图9是表示将被编译的源代码的示例图;
附图10是表示图9所示的以基本块划分的源代码的图;
附图11是表示图8中所示的预取目标提取装置的操作流程图;
附图12A~12D表示从图10所示的各个基本块生成的预取目标列表图;
附图13是表示由图8所示的线程激活插入装置执行的处理流程图;
附图14和15是表示由图8所示的线程过程生成装置生成的预取线程中的处理流程图;
附图16是表示在由一个过程激活的预取线程中执行的处理流程图,该过程用于激活将插入在图10所示的基本块中的预取线程;
附图17是表示在一个预清除线程中执行的处理流程图;
附图18是表示在执行从图9的源代码生成的程序序列时的操作图象图;
附图19是表示根据本发明的第二实施例配有多个处理器的计算机系统的结构图;
附图20A是说明计划用于另一个处理器的预取指令的图;
附图20B是说明计划用于另一个处理器的预清除指令的图;
附图21A是表示图20A中所示的预取指令的具体示例图;
附图21B是表示图20B中所示的预清除指令的具体示例图;
附图22是说明处理器识别指令的图。
具体实施方式
(第一实施例)
下面参照附图给出根据本发明的第一实施例的计算机系统的详细说明
(1)硬件结构
附图1是表示根据本发明的第一实施例的计算机系统的硬件结构图。如图1所示,根据本发明的计算机系统600由CPU 601、存储器控制器604、高速缓冲存储器602和主存储器603构成。
主存储器603是用于存储指令和数据的大容量存储装置,对其可以以低速进行存取。高速缓冲存储器602是用于临时存储存储在主存储器603的某些位置中的指令和数据的小容量存储装置,对其可以进行高速存取。CPU601是一个运算单元,用于执行存储在主存储器603或高速缓冲存储器602中的指令,并向主存储器603或高速缓冲存储器602写数据或从其读数据。存储器控制器604是控制主存储器603与高速缓冲存储器602之间的存取并控制CPU 601与高速缓冲存储器602之间以及与主存储器603之间的存取的控制装置。
附图2是说明高速缓冲存储器中的存储位置的图。高速缓冲存储器602以逐个入口项为基础存储数据,其由入口项202、203、204和205构成。
附图3是说明构成图2所示的高速缓冲存储器的入口项的详细情况图。入口项205(202、203和204)由指令/数据字段304,地址字段301,有效指示字段302和写指示字段303组成。
存储在指令/数据字段304中的是指令或数据。存储在地址字段304中的是对应于存储在指令/数据指令字段304中的指令或数据的主存储器304中的地址。
存储在有效指示字段302中的是指示存储在该入口项中的指令或数据是否是有效的1位。有效指示字段302具有1位元素。如果该位的值为1则其指示有效指令或数据存储在该入口项中,反之如果该位的值为0则指示有效的指令或数据没有存储在该入口项中。
存储在写指示字段303中的是指示是否已对该入口项执行了写的1位。写指示字段303具有1位元素。如果该位的值为1则其指示已对该入口项执行了写,反之如果该位的值为0则指示还没有对该入口项执行写。
图1中的主存储器603包括32位地址空间,例如其以16字节为基础被分成“行”。在这种情况下,等同于一行的指令或数据存储在高速缓冲存储器602的一个入口项中。例如,当存储在主存储器603的地址0x80000008处的数据从主存储器603传送到高速缓冲存储器602时,存储器控制器604执行控制以便存储在主处理器中从地址0x80000000到0x8000000F的16字节的指令或数据立即被传送至高速缓冲存储器602。
附图4是表示一存储器控制器的原理图。如图4所示,存储器控制器604具有高速缓存使用量寄存器501。存储在该高速缓存使用量寄存器501中的是其在有效指示字段302中的位指示为有效的入口项的数量。换句话说,当高速缓冲存储器602中某一入口项的有效指示字段302的1位从无效变为有效时,存储在高速缓存使用量寄存器501中的入口项的数量加1,反之当高速缓冲存储器602中某一入口项的有效指示字段302的1位从有效变为无效时,存储在高速缓存使用量寄存器501中的入口项的数量减1。由CPU 601执行的软件通过参考存储在高速缓存使用量寄存器501中的该入口项数量可以了解到高速缓冲存储器使用的次数。
附图5是表示当CPU 601从或向高速缓冲存储器602或主存储器603读或写指令或数据时由存储器控制器执行的操作的流程图。根据图5所示的流程图,存储器控制器604根据一种完全相关方案控制高速缓冲存储器602与主存储器603之间的指令或数据的存取。
在接收到来自CPU 601的存储器存取请求之后,存储器控制器604检查在对应于存储器存取所请求的地址的高速缓冲存储器602中是否存在任何指令或数据(S401)。说明另一种方式,存储器控制器604检查高速缓冲存储器602中其有效指示字段302中的位指示为有效的入口项以外是否存在任何其地址字段301存储有与存储器存取所请求的地址相同的地址的入口项。当存在包括目标地址的入口项时(S401中的是),存储器控制器604执行控制以便从或向高速缓冲存储器602中的上述入口项中读或写指令或数据(S402)。
当有效入口项中没有一个入口项的地址字段301存储有与目标地址匹配的地址时(S401中的否),存储器控制器604检查是否存在任何其有效指示字段302中的位指示为无效的入口项(S403)。当存在其有效指示字段302中的位为无效的入口项时(S403中的是),存储器控制器604选择一个这样的入口项,并将存储在包括主存储器604的目标地址的行中的指令或数据传送给该选择的入口项。同时,存储器控制器604将目标地址写入已传送指令或数据的入口项的地址字段(S404)。此外,存储器控制器604设置该入口项的有效指示字段302的位为有效,并设置该入口项的写指示字段303的位为无效。
当所有入口项的有效指示字段302的位都指示为有效时,存储器控制器604通过使用最近最少使用(LRU)算法来选择内容应当改变的入口项(以下称为“目标入口项”),并检查该目标入口项的写指示字段303的位是有效还是无效(S405)。当写指示字段303指示为有效时(S405中的是),存储器控制器604将该目标入口项的指令/数据字段304的内容传送到主存储器603(S406)。之后,存储器控制器604根据等同于上述改写处理的过程将指令或数据写入该目标入口项(S404)。
当目标入口项的写指示字段303指示为无效时(S405中的否),存储器控制器604根据等同于上述改写处理的过程将指令或数据写入该目标入口项(S404),而不执行对主存储器603的传送处理(S406)。
附图6A和6B是分别说明由CPU 601执行的预取指令和预清除指令的图。对于CPU 601来说可以通过除了普通的存储器存取指令之外执行预取指令1900或预清除指令1903来清楚地操作高速缓冲存储器602。
如图6A所示,由操作码1901“预取”表示的预取指令1900是一个用于根据等同于在从CPU 601到主存储器603进行存取之后的过程,将主存储器603上包括由操作数1902“地址”表示的地址的行传送给高速缓冲存储器602的指令。
如图6B所示,由操作码1904“预清除”表示的预清除指令1903是一个用于如果地址字段301中该入口项的地址与由操作数1905“地址”指定的地址匹配,使高速缓冲存储器602上其有效指示字段302中的位指示为有效的入口项之外的入口项的有效指示字段302无效的指令。但是,当写指示字段303的位指示为有效时,有效指示字段302在从高速缓冲存储器602向主存储器603传送数据之后被该指令无效。
(2)操作系统的配置
附图7是表示用在根据本发明的第一实施例的计算机系统600中的操作系统的配置图。操作系统1800是一个能够进行多任务处理的通用控制程序,其配置有高速缓存使用率监控装置1801,任务控制装置1802,和优先级通知装置1803。这些装置中的每个装置都可以以CPU 601上执行的程序来实现。
高速缓存使用率监控装置1801通过参考存储器控制器604的高速缓存使用量寄存器501来监控高速缓冲存储器602的使用率。
任务控制装置1802执行控制以便以预定时间间隔切换多个任务中的一个任务到另一个任务。每个执行的任务被给定一个优先级。任务控制装置1802切换任务以便提供较长的执行时间给具有较高优先级的任务。但是,当由高速缓存使用率监控装置1801监控的高速缓冲存储器602的使用率超过一指定值时,任务控制装置1802减少具有较低优先级的任务所执行的频率,并且转而增加具有较高优先级的任务所执行的频率。这里,上述的指定值是一个取决于所支持的应用程序类型以及程序序列的类型的值,因此最好是可以设置随机数值作为该值。
优先级通知装置1803响应在执行时该任务的询问而提供表示是否存在具有比在执行的任务的优先级高的任务的通知。应当注意,优先级通知装置1803也可以是应用程序接口(API),如果存在比正调用任务的优先级高的已进行上述询问的任务时则返回一个真值,如果不存在具有更高优先级的任务则返回一个假值。
(3)编译器的配置
附图8是表示产生将由计算机系统600的CPU 601执行的程序的编译器装置的结构图。编译器装置100是一个用于将源程序转换成可执行形式的程序的程序,其由源代码分析装置101,优化装置102,预取目标提取装置103,线程激活过程插入装置104,线程过程生成装置105,以及目标代码生成装置106构成。这些装置以将在CPU 601上执行的程序来实现并配置,以便它们以顺序方式操作。
编译器装置100将源程序分成叫做“基本块”的块,并在基本块的基础上执行编译处理。基本块是一组包括没有任何分支并因此而一律顺序操作的指令。如图9所示的源代码700,例如被分成如图10所示的基本块801、802、803、804和805,在基本块的基础上对其执行编译处理。
源代码分析装置101读取由程序员编写的源程序,对该源程序执行语法分析和词义分析,并生成中间代码。
优化装置102对由源代码分析装置101生成的中间代码进行优化,以便在最后阶段产生的可执行代码的大小和执行时间变得小而短。
预取目标提取装置103提取将被预取的变量。该预取目标提取装置103的详细说明将在后面给出。
线程激活过程插入装置104插入用于激活预取线程和预清除线程的过程。该线程激活过程插入装置104的详细说明将在后面给出。
线程过程生成装置105生成预取线程和预清除线程。由该线程过程生成装置105生成的预取线程和预清除线程的详细说明将在后面给出。
目标代码生成装置106从分别由源代码分析装置101和优化装置102产生和优化的中间代码生成可执行代码,并且通过预取目标提取装置103、线程激活过程插入装置104以及线程过程生成装置105向其插入预取线程和预清除线程。
在这里没有给出源代码分析装置101、优化装置102,以及目标代码生成装置106的详细说明,因为它们不是本发明的主题并且它们的操作与现有的编译器所执行的操作相同。
附图11是表示图8中所示的预取目标提取装置103的操作流程图。预取目标提取装置103根据图11所示的流程图生成对应于每个基本块的预取目标列表。预取目标列表是一个其中存储有一组将被预取的基本块的地址和包含在该基本块中的变量的地址的列表。
预取目标提取装置103提取其中存储有包含在基本块中的指令的行的地址,并将其添加到预取目标列表中(S901)。在基本块的指令不能存储在一行中时,预取目标提取装置103将多行的地址添加到预取目标列表中。
预取目标提取装置103检查基本块中使用的变量的地址是否已经记录在预取目标列表中(S903)。如果没有(S901中的否),则预取目标提取装置103将变量的地址记录到预取目标列表中(S903)。预取目标提取装置103从基本块的开头到结尾(S902~S904)重复记录变量的地址到预取目标列表的处理(S903和S905),然后终止处理。但是,在编译时,不可能确定变量和指令要放置的存储器上的地址。因此,本发明被配置为使得临时地址信息存储在预取目标列表中,然后当确定实际地址时在链接目标文件时将其改写为实际地址信息。
附图12A~12D是表示根据图11所示的过程,从图10所示的各个基本块801、802、803和805生成的预取目标列表的图。预取目标列表1001、1002、1003和1004与图10所示的各个基本块801、802、803和805结合生成。但是,应当注意对应于基本块804的预取目标列表当编译函数func2时生成,因此当编译函数func1时不能生成。
附图13是表示当插入用于激活一个预取线程的过程时由图8所示的线程激活过程插入装置104执行的处理流程图。在基本块的基础上执行图13的处理。线程激活过程插入装置104检查正处理的基本块的后续基本块的数目是否是一块(S1101)。如果后续基本块的数目是1块(S1101中的是),则线程激活过程插入装置104将一个用于激活预取这种变量的线程的过程插入到一个允许在开始执行该后续基本块之前完成对记录在该后续基本块的预取目标列表中的变量的预取的位置中(S1102)。
当存在两个或多个后续基本块时(S1101中的否),这意味着在感兴趣的基本块中存在分支条件。为此,线程激活过程插入装置104判断在开始后续基本块的处理之前是否完成预取,即使这种预取在确定决定哪个基本块将被下一个执行的分支条件之前开始(S1103)。当判断该预取在后续基本块开始处理之前完成(S1103中的是),线程激活过程插入装置104依靠由分支条件确定的后续基本块插入激活用于预取记录在后续基本块的预取目标列表中的预取变量的线程的过程(S1104)。应当注意线程激活过程在确定用于判断分支条件的变量值之后立即被插入。因此,在开始后续基本块的处理之前完成预取。例如,取出基本块801,在执行赋值语句“a=x+y;”和“b=x*y;”之后确定变量a和b的值。在该时间点,确定一个分支条件,用于决定将执行基本块802和803中的哪一个。因此,在执行赋值语句“b=x*y;”之后立即插入一个用于激活预取线程的过程在该位置。
当判断在开始后续基本块的处理之前将不能完成预取时(S1103中的否),线程激活过程插入装置104在确定分支条件之前,插入一个激活用于预取记录在所有后续基本块的预取目标列表中的变量的过程(S1105)。应当注意所述线程激活过程插入到一个允许在开始后续基本块的处理之前完成预取的位置。
例如,在图9所示的源代码700以及图10所示的基本块801,802,803和805的情况下,根据基于变量a与变量b之间的大小关系确定的分支条件,在基本块801之后可以执行基本块802或基本块803。用在分支条件中的变量a和b的值在基本块801中进行确定。因此,假定从确定b值到开始执行基本块802和803花费20个机器周期,花费10个机器周期进行预取,线程激活过程插入装置104判断在下一个基本块激活之间完成预取,该下一个基本块可以是基本块802和803。因此,线程激活过程插入装置104在执行用于确定变量b的值的处理之前插入一个激活预取线程的过程。
另一方面,假定从确定变量b的值一直到开始执行基本块802或803为止要花费10个机器周期,并且花费20个机器周期进行预取,线程激活过程插入装置104插入一个用于激活对应于各自的基本块802和803的预取线程。此外,在一个基本块的结尾插入一个用于预清除线程的过程,但是这部分的描述将在后面给出。
附图14是表示由图8所示的线程过程生成装置105生成的预取线程中的处理流程图。图14所示的预取线程是一个根据分支条件不改变将被预取的基本块的预取线程(在用于激活图13所示的预取线程的过程中激活的线程(S1102和S1105))。
预取线程询问操作系统1800是否正在执行一个具有比已激活该预取线程的优先级高的任务(S1201)。如果没在执行具有比上述询问的调用任务高的优先级的任务(S1201中的是),则该预取线程从主存储器603中预取记录在预取目标列表中的地址的指令和数据(S1203)。
如果正在执行具有更高优先级的任务(S1201中的否),则该预取线程检查保存在高速缓存使用量寄存器501中的值以查看指示高速缓冲存储器602的使用率的值是否等于或低于指定的值(S1202)。如果高速缓冲存储器602的使用率等于或低于指定的值(S1202中的是),则预取线程从主存储器603中预取记录在预取目标列表中的地址的指令和数据(S1203中的是)。如果高速缓冲存储器602的使用率超过所述指定值(S1202中的否),则预取线程终止处理。
应当注意,上述指定值是取决于所支持的应用程序类型以及程序序列的类型的值,因此最好可以设置随机数值作为这一值。
如上所述,通过考虑高速缓冲存储器的使用率来确定是否执行预取,可以避免具有较高优先级的任务所使用的指令和数据被从高速缓冲存储器602中清洗。因此,变得可以提高高速缓冲存储器602的命中率,并因此而有效地利用高速缓冲存储器602。结果允许高速处理。
附图15是表示在由图8所示的线程过程生成装置105产生的预取线程中执行的处理的流程图。图15所示的预取线程是根据分支条件改变将要预取的基本块的预取线程(在用于激活图13所示的预取线程的处理中激活的线程(S1104))。
这里,假定存在“n”个后续基本块,从基本块B1到Bn(其中“n”为整数),并且用于执行基本块B1~Bn的条件分别为条件C1~Cn。
在该预取线程中,与图14所示的预取线程的情况相同,当不存在任何具有比已激活该预取线程的任务的优先级高的任务时(S1201中的是),以及当虽然存在具有更高优先级的任务但是高速缓冲存储器602的使用率等于或低于所述指定值时(S1201中的否以及S1202中的是),执行以下处理。
该预取线程检查是否满足条件C1~Cn中的任何一个条件(S1301~S1305)。然后,该预取线程选择一个对应于所满足的条件Ci的基本块Bi的预取目标列表,并且预取存储在该预取目标列表中的地址的指令和数据(S1302,S1304,S1306以及S1307)。
例如,当条件C1为真时(S1301中的是),该预取线程预取记录在与基本块B1相关的预取目标列表中的地址的指令和数据(S1302)。当条件C2为真时(S1303中的是),该预取线程预取记录在与基本块B2相关的预取目标列表中的地址的指令和数据(S1304)。当条件C(n-1)为真时(S1305中的是),该预取线程预取记录在与基本块B(n-1)相关的预取目标列表中的地址的指令和数据(S1306)。当所有条件C1到C(n-1)都为假时,由于条件Cn为真(S1305中的否),因此该预取线程预取记录在与基本块Bn相关的预取目标列表中的地址的指令和数据(S1305)。
接着,将给出在线程激活过程中被激活的一个预取线程的描述。附图16是表示在由一个处理器激活的预取线程中执行的处理流程图,用于激活将插入在图10所示的基本块中的预取线程。
该预取线程检查是否正在执行一个具有比已激活该预取线程的任务的优先级高的任务(S1401)。如果正在执行具有较高优先级的任务(S1401中的否),则该预取线程检查保存在高速缓存使用量寄存器501中的值以查看指示高速缓冲存储器602的使用率的值是否等于或低于一个指定值(S1402)。如果存在一个具有较高优先级的任务并且高速缓冲存储器602的使用率超过所述指定值(S1401中的否以及S1402中的否),则该预取线程终止处理而不执行预取处理。
如果不存在具有更高优先级的预取线程(S1401中的是),或者高速缓冲存储器602的使用率等于或低于所述指定值(S1402中的是),则该预取线程对一个用于分支到基本块802或基本块803的条件进行判断(S1403)。叙述另一种方式为,所述预取线程比较变量a和变量b的大小。当变量a的值大于变量b的值时(S1403中的是),后续基本块为基本块802。因此,该预取线程根据记录在对应于基本块802的预取目标列表1002中的地址来预取指令和数据(S1404)。
当变量a的值等于或低于变量b的值时(S1403中的否),后续基本块为基本块803。因此,该预取线程根据记录在对应于基本块803的预取目标列表1003中的地址来预取指令和数据(S1405)。
线程过程生成装置105除上述预取线程以外还生成预清除线程。附图17是表示在一个预清除线程中执行的处理流程图。在第一次循环处理中(S1501~S1506),所述预清除线程顺序选择包含在对应于一个将被预清除的基本块的预取目标列表中的地址。此外,在第二次循环处理中(S1502~S1504),该预清除线程顺序选择包含在将在要被预清除的基本块之后下一个执行的基本块中的地址。在第一和第二次循环中,所述预清除线程比较包含在对应于将被预清除的基本块的预取目标列表中的地址与包含在对应于下一基本块的预取目标列表中的所有地址。如果对应于下一基本块的预取目标列表不包括任何存在于与包含在将被预清除的基本块的预取目标列表中的地址相同的行上的地址(S1503中的是),则该预清除线程预清除包含在对应于将被预清除的基本块的预取目标列表中的地址的指令和数据(S1505)。如果对应于下一基本块的预取目标列表包括存在于与包含在将被预清除的基本块的预取目标列表中的地址相同的行上的地址(S1503中的否),则该预清除线程选择包含在对应于将被预清除的基本块的预取目标列表中的另一个地址(S1506),并且循环相同的处理(S1501~S1506)。
例如,使用图9所示的源代码和图10所示的基本块801,802,803,和805,假定由基本块801所使用的位置被预清除的情况。在执行基本块801之后,下一个执行基本块802或基本块803。因此,预清除线程比较预取目标列表1001与预取目标列表1002和1003。
首先,该预清除线程比较存储在对应于基本块801中的预取目标列表1001中的地址与存储在预取目标列表1002和1003中的所有地址。如果预取目标列表1002和1003包括一个与基本块801的地址在相同行上的地址,同时它们不包括任何与基本块801的地址相同的地址,则预清除线程不预清除基本块801的任何地址。另一方面,如果预取目标列表1002和1003在同一行上不包括任何地址,则该预清除线程执行预清除。
由于变量a和变量b的地址存在于预取目标列表1002和1003中,预清除线程不执行任何预清除。同时,当变量x的地址没有存在于预取目标列表1002或1003中但是存在相同行上的地址,则预清除线程不预清除变量x的地址。类似的,如果存在相同行上的地址,预清除线程不预清除变量y的地址。线程过程生成装置105生成一个执行上述处理的预清除线程,并且插入一个用于激活该预清除线程的过程。
(4)在执行时的图象
附图18是表示在执行从图9的源代码700生成的程序序列时的操作图象图。在图18中,主线程801表示在源代码中编写的程序。基本块801以间隔1604执行,而基本块802或基本块803以间隔1605执行。
由于通过编译器装置100的线程激活过程插入装置104将线程激活过程插入在程序中,预取线程1602在执行基本块801的同时被激活。预取线程1602是一个由编译器装置100的线程过程生成装置105生成的线程。当与主线程1601并行操作时,根据图14、15和16中任何一个所示的流程图,预取线程1602预取将由下一个将被执行的基本块802和803中的一个或两个基本块使用的指令和数据。在完成预取处理后,预取线程1602消失。
当完成基本块801的处理时,编译器装置100的线程激活过程插入装置104插入一个线程激活过程。为此,当基本块801的执行结束时激活预清除线程1603。预清除线程1603是一个由编译器装置100的线程过程生成装置105生成的线程。当与主线程1601并行操作时,根据图17所示的流程图,预取线程1603预取将由下一个将被执行的基本块801使用的指令和数据。该预清除线程1603在完成预清除处理时消失。
在间隔1605中,执行基本块802或基本块803的处理。通常,将被执行的指令以及将由基本块802和803使用的变量没有存在于高速缓冲存储器602中。这使得不能在从主存储器603向高速缓冲存储器602传送指令和数据的同时执行程序。但是,根据本发明在由编译器装置100编译的程序中,预取线程1602在间隔1605传送将被用在该间隔1605中的指令和数据。因此,CPU 601可以在执行基本块801的处理之后立即执行下一基本块802或803的处理。
此外,预清除线程1603从高速缓冲存储器602预取将用在下一基本块802或803中的指令和数据。因此,可以防止必要的指令和数据被从高速缓冲存储器602中清洗。应当注意,预取线程和预清除线程是以上述方式重复生成和消失的。
如上所述,在根据本发明的第一实施例的计算机系统中,预取线程监控高速缓冲存储器的使用率,如果使用率很高则不执行任何预取。因此,通过执行预取,可以防止当前使用的指令和数据被预清除到主存储器中。这使得可以减少高速缓存未命中的发生并因此而提高执行程序的速度。此外,通过预取将由一个具有较低优先级的程序使用的指令或数据,不会发生由具有较高优先级的程序使用的指令或数据被清除并且白白执行预取的情况。
此外,在本实施例中,当存在两个或多个基本块时,在即使是确定分支条件之后将执行后续基本块之前完成预取的情况下,所述预取被设计成在确定该分支条件之后执行。因此,对于不必要的基本块的指令和数据来说将不可能被预取。
此外,还可以在当已激活一个预取线程的任务是一个具有最高优先级的任务时允许执行预取。因此,由具有较高优先级的任务所使用的指令或数据不可能被具有较低优先级的任务从高速缓冲存储器中清洗,因而增加了高速缓冲存储器的命中率。
(第二实施例)
下面,将参照附图给出根据本发明第二实施例的计算机系统的详细说明。与第一实施例中的计算机系统不同,根据本发明的计算机系统配置有不止一个CPU,因此可以并行执行过程。
附图19是表示根据本发明的第二实施例配有多个处理器的计算机系统的结构图。计算机系统1700由CPU 1701和1705、主存储器1703、两个高速缓冲存储器1702和1707、两个存储器控制器1704和1706、以及处理器间通信装置1708构成。
主存储器1703具有与根据第一实施例的主存储器603具有相同的结构。
高速缓冲存储器1702和1707中每一个都具有与高速缓冲存储器602相同的结构。
CPU 1702是一个运算单元,用于执行存储在主存储器1703或高速缓冲存储器1702中的指令,并在主存储器1703或高速缓冲存储器1702之间执行数据读或写。CPU 1705是一个运算单元,用于执行存储在主存储器1703或高速缓冲存储器1707中的指令,并在主存储器1703或高速缓冲存储器1707之间执行数据读或写。
存储器控制器1704是控制主存储器1703与高速缓冲存储器1702之间的存取并控制CPU 1701与高速缓冲存储器1702之间以及与主存储器1703之间的存取的控制装置。存储器控制器1706是控制主存储器1703与高速缓冲存储器1707之间的存取并控制CPU 1705与高速缓冲存储器1707之间以及与主存储器1703之间的存取的控制装置。
处理器间通信装置1708是连接CPU 1701和CPU 1705以实现将在CPU之间执行的通信的装置。因此,对于运行于各个CPU上的程序来说可以通过处理器间通信装置1708发送命令给其他CPU。更特别地是,CPU 1701与1705被分配有唯一的处理器ID,从而它们可以通过指定其处理器ID来发送命令给任意的CPU。
附图20A是说明用于使其他CPU的高速缓冲存储器执行预取的指令的图。附图20B是说明用于使其他CPU的高速缓冲存储器执行预清除的指令的图。如图20A所示,预取指令2000是一个由操作码2001“预取”表示的指令,与用在配置有如图6A所示的单个CPU的计算机系统中的预取指令的情况相同。但是,与图6A所示的指令不同,除了操作数2003“地址”,其还包括操作数2002“CPU id”,表示所述预取指令是针对哪个CPU。该指令使得具有由操作数2002“Cupid”指示的处理器ID的CPU预取存储在由操作数2003“地址”所指示的地址所指定的位置上的指令或数据。
类似的,图20B所示的预清除指令2004使得具有由操作数2006“Cupid”指示的处理器ID的CPU预清除存储在由操作数2007“地址”所指示的地址所指定的位置上的指令或数据。
附图21A是表示图20A中所示的预取指令2000的具体示例图。附图21B是表示图20B中所示的预清除指令2004的具体示例图。这里,假定CPU 1701的处理器ID为“0”并且CPU 1705的处理器ID为“1”。
在此,假定预取线程运行于CPU 1701上,并且对应于已调用该预取线程的基本块的程序运行于CPU 1705上。在这种情况下,运行于CPU 1701上的预取线程使得CPU 1705执行预取。考虑这样一个例子,其中运行于CPU1701上的预取线程使得CPU 1705预取存储在主存储器1703中地址0x80000008处的数据。在这种情况下,该预取线程执行图21A所示的预取指令。当执行预取指令2100时,CPU 1701发送一个命令给处理器间通信装置1708以使得CPU 1705预取存储在主存储器1703中地址0x80000008处的数据。在接收到该命令后,处理器间通信装置1708发送一个命令给CPU 1705以预取存储在主存储器1703中在地址0x80000008处的数据。随后,根据第一实施例相同的过程,存储在主存储器1703中的指令或数据被传送至高速缓冲存储器1707。
接着,假定预清除线程运行于CPU 1701上,并且对应于已调用该预清除线程的基本块的程序运行于CPU 1705上。在这种情况下,运行于CPU 1701上的预清除线程使得CPU 1705执行预清除。例如,当预清除对应于CPU 1705的高速缓冲存储器1707的地址0x80000008处的数据时,运行于CPU 1701上的预清除线程执行图21B所示的预清除线程2101。在这种情况下,根据与用于预取的过程相同的过程发送一个预清除命令给CPU 1705。
附图22是说明为一个识别CPU的处理器ID的程序而执行的处理器识别指令的图,在该CPU上正执行所述程序。处理器识别指令2200是一个由操作码2201“GetCPU id”表示的指令。当执行该指令时,在其上正执行程序的CPU的处理器ID被存储到由操作数表示的寄存器2202“Reg”中。
如上所述,通过包括处理器识别指令作为配置的一部分,使得当激活该预取线程时,可以提前通知在其上正执行主线程的CPU的处理器ID的预取线程。这使得对于其上正运行预取线程的CPU来说可以对在其上正运行主线程的另一个CPU请求预取,即使是在该预取线程和主线程运行于不同的CPU的时候。应当注意,当开始执行主线程时,执行处理器识别指令220,并且当激活预取线程时以自变量的形式传送处理器ID。这里,还可以将处理器ID写入主存储器1703中,然后通过主存储器1703将其传送至预取线程。对于预清除指令来说,与预取线程的情况相同,也传送其上运行有主线程的CPU的处理器ID。
在此不再给出对其他处理的详细说明,因为它们与第一实施例中给出的相同。
应当注意,在根据本实施例的操作系统中,一个任务被优先地分配给具有使用率为最低的高速缓冲存储器1702(1707)的CPU 1701(1705)。但是,与配置有单个处理器的计算机系统600的情况相同,当所有高速缓冲存储器1702和1707的使用率都超过一个指定值时,减少具有较低优先级的任务被执行的频率,而增加具有较高优先级的任务被执行的频率。
根据本实施例,除了第一实施例的计算机系统所提供的功能和效果,所述处理器间通信装置还控制一个处理器与另一个处理器之间的存取。这有助于在一个程序中控制不止一个高速缓冲存储器。
此外,通过优先分配一个任务给使用率较低的处理器,可以提高计算机的整体性能。
而且,如果所有高速缓冲存储器的使用率都超过一个指定值,则增加具有较高优先级的任务的频率。因此,变得可以在考虑任务优先级的情况下逐个任务的控制多个高速缓冲存储器。
应当注意,本实施例中提供的编译器装置体现为将在计算机上执行的程序。因此,可以将这种程序存储在包括软盘、硬盘、CD-ROM、磁光盘(MO)、数字通用光盘-只读存储器(DVD-ROM)的记录介质上。同时,可以以可执行的形式存储由编译器装置生成的代码在这些记录介质上。
虽然仅对根据本发明的硬件、操作系统以及编译器的某些典型实施例进行了上述详细说明,那些本领域技术人员将会很容易理解到在本质上不脱离本发明的新颖性教导和优点的情况下可以在这些典型实施例中作出各种修改。因此,所有这些修改都将包含在本发明的范围内。
例如,根据前述实施例的计算机系统由一个或两个CPU构成,但是它们也可以配置有三个或更多的CPU。
此外,在上述实施例中,假定为对所有的基本块都执行预清除处理和预取处理,但是这种处理并不是必须要对所有的基本块都执行的,因此,预取处理和预清除处理可以对特定的基本块执行。例如,编译器装置可以:基于一个循环条件和包含在程序中的类似条件选择一个应当对其执行预取和预清除处理的基本块;基于简表信息,仅对这种处理是有效的基本块执行预取处理和预清除处理;以及通过指定一个编译选项或编译指示来选择一个应当对其执行预取处理或预清除处理的基本块。
此外,根据上述实施例的编译器装置在基本块的基础上生成预取线程和预清除线程,但是对于每个基本块来说并不必须提供这些线程。例如,预取线程和预清除线程可以为处理的每个功能或一个任意单元提供,以便执行预取处理和预清除处理。在这种情况下,最好是生成预取目标列表的单元由预取目标提取装置103改变,并且插入线程激活过程的位置由线程激活过程插入装置104改变。
此外,对前述实施例的高速缓冲存储器的存取根据完全相关方案控制,但是如果根据组关联方案和直接映射方案来执行存取控制,也可以保持本发明的意义。
而且,图17所示的预清除线程预清除不用在紧接下一基本块中的变量,但是其也可以预清除不用于后两个或更多的基本块的变量。通过考虑后续基本块来执行预清除,可以防止预清除变量在之后不久被预取。
工业实用性
本发明可应用于配置有高速缓冲存储器的计算机系统,也可以应用于用在这种计算机系统中的编译器装置和操作系统以及类似装置中。

Claims (19)

1.一种计算机系统,包括:
高速缓冲存储器,存储有一个或多个存储在主存储器中的指令和数据;以及
高速缓存控制单元,用于测量该高速缓冲存储器的使用率并控制该高速缓冲存储器,
其中所述高速缓存控制单元具有计数器,该计数器用于测量所述高速缓冲存储器中有效入口项的数量,以便指定所述使用率,并根据所述测量的使用率来控制高速缓冲存储器。
2.一种计算机系统,包括:
多个高速缓冲存储器,对应于多个处理器中的各个处理器并且存储有存储在主存储器中的一个或多个指令和数据;
多个高速缓存控制单元,对应于所述多个高速缓冲存储器中的各个高速缓冲存储器;以及
处理器间通信单元,用于使多个处理器互连,并且在从多个处理器中的第一处理器接收到操作一个对应于不同于第一处理器的第二处理器的高速缓冲存储器的命令后,输出一个操作所述高速缓冲存储器的命令给对应于第二处理器的高速缓存控制单元,
其中所述多个高速缓存控制单元中的每一个具有计数器,该计数器用于测量所述高速缓冲存储器中有效入口项的数量,以指定所述使用率,并且所述多个高速缓存控制单元根据来自处理器间通信单元的命令操作各个高速缓冲存储器。
3.根据权利要求2所述的计算机系统,进一步包括一个处理器识别单元,用于识别正执行一个程序的处理器,
其中在接收到识别第二处理器的信息后,第一处理器基于该识别第二处理器的信息,向该处理器间通信单元发送用于操作对应于第二处理器的高速缓冲存储器的命令。
4.根据权利要求3所述的计算机系统,
其中处理器识别单元被实现作为机器语言指令,其返回分配给各个处理器的唯一号。
5.如权利要求2所述的计算机系统,
其中处理器间通信单元在接收到来自第一处理器的命令之后,发送预清除指令或预取指令给对应于第二处理器的高速缓冲存储器。
6.一种编译器装置,用于将以高级语言编写的源程序转换成将要在如权利要求1或2所述的计算机系统中执行的可执行程序,所述编译装置包括:
预取目标提取单元,用于对源程序中的每个预定执行组提取将从主存储器预取到高速缓冲存储器的指令或数据,并产生一个列出所提取指令或数据的地址的地址列表;以及
一个线程过程生成单元,用于(i)分析源程序中每个执行组的控制结构,(ii)根据分析的结果从所述地址列表中选择将被预取的指令或数据的地址,以及(iii)生成用于预取存储在由所选择的地址指定的位置的指令或数据的预取线程。
7.根据权利要求6所述的编译器装置,
其中线程过程生成单元检查激活所述线程过程生成单元的任务的优先级,并当没有在任何一个处理器上执行具有高于所述优先级的优先级的任务时生成用于执行预取的预取线程。
8.根据权利要求7所述的编译器装置,
其中线程过程生成单元只在高速缓冲存储器的使用率等于或低于一指定值时才生成用于执行预取的预取线程。
9.根据权利要求6所述的编译器装置,进一步包括线程激活过程插入单元,用于将激活由线程过程生成单元产生的预取线程的过程插入到源程序中。
10.根据权利要求6所述的编译器装置,进一步包括一个预取计时确定单元,基于感兴趣执行组中的指令所需的执行时间以及与下一个执行组中的所述预取指令和数据有关的时间,确定应当在源程序上开始预取的预取开始时间,所述预取开始时间允许在下一执行组开始执行指令之前完成所述预取的执行,
其中所述线程激活插入单元在由预取计时确定单元确定的对源程序的预取开始时间时插入一个激活用于预取下一执行组中的指令或数据的预取线程。
11.根据权利要求10所述的编译器装置,
其中当在感兴趣执行组之后可能存在立即执行的多个执行组时,预取计时确定单元(i)在确定所述多个执行组中的一个组作为将在感兴趣的组执行之后立即执行的后续执行组时,检查是否预取所述多个执行组中的一个组的指令或数据,以及在开始所述后续执行组的处理之前所述预取完成,以及(ii)当所述检查结果表明所述预取在后续执行组的处理开始之前完成时,将所述确定后续执行组的时间看作所述后续执行组的指令或数据的预取开始的时间,并且
在存在有可能在执行感兴趣的组之后立即执行的多个执行组的情况下,当由预取计时确定单元执行的检查结果表明即使在确定后续执行组时执行所述预取,所述预取也可以在后续执行组的处理开始之前完成时,所述线程过程插入单元根据所述确定结果选择用于确定后续执行组的处理以及后续执行组,并且生成用于预取所选择的执行组的指令或数据的预取线程。
12.根据权利要求6所述的编译器装置,
其中每个执行组是一个基本块。
13.一种用于在如权利要求1或2所述的计算机系统中执行多任务的方法,所述方法包括:
监视高速缓冲存储器的使用率;
根据所述使用率控制由处理器执行的任务的执行顺序。
14.根据权利要求13所述的方法,还包括:
检查是否存在一个具有比正被所述处理器执行的任务的优先级高的任务;以及
当高速缓冲存储器的使用率大于一预定阈值时,增加执行频率,以便具有较高优先级的任务的执行频率变得高于高速缓冲存储器的使用率等于或低于所述预定阈值的情况。
15.根据权利要求14所述的方法,
其中,当存在比正调用任务的优先级高的任务时返回一个真值,当不存在具有更高优先级的任务时返回一个假值。
16.一种编译器,用于将以高级语言编写的源程序转换成可执行程序,该编译器使得如权利要求1或2所述的计算机系统执行以下步骤:
预取目标提取步骤,用于对源程序中的每个预定执行组提取将从主存储器预取到高速缓冲存储器的指令或数据,并产生一个列出所提取指令或数据的地址的地址列表;以及
线程过程生成步骤,(i)分析源程序中每个执行组的控制结构,(ii)根据分析的结果从所述地址列表中选择要预取的指令或数据的地址,以及(iii)生成用于预取存储在由所选择的地址指定的位置的指令或数据的预取线程。
17.根据权利要求16所述的编译器,进一步使得计算机执行线程激活过程插入步骤,用于将激活由线程过程生成步骤产生的预取线程的过程插入到源程序中。
18.一种编译方法,用于将以高级语言编写的源程序转换成将要在如权利要求1或2所述的计算机系统中执行的可执行程序,包括:
预取目标提取步骤,用于对源程序中的每个预定执行组提取将从主存储器预取到高速缓冲存储器的指令或数据,并产生一个列出所提取指令或数据的地址的地址列表;以及
线程过程生成步骤,(i)分析源程序中每个执行组的控制结构,(ii)根据分析的结果从所述地址列表中选择要预取的指令或数据的地址,以及(iii)生成用于预取存储在由所选择的地址指定的位置的指令或数据的预取线程。
19.根据权利要求18所述的编译方法,进一步包括线程激活过程插入步骤,用于将激活由线程过程生成单元产生的预取线程的过程插入到源程序中。
CNB2004100685838A 2003-08-29 2004-08-27 计算机系统、编译器装置以及编译方法 Expired - Fee Related CN100340975C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2003306437A JP4374221B2 (ja) 2003-08-29 2003-08-29 コンピュータシステムおよび記録媒体
JP306437/2003 2003-08-29

Publications (2)

Publication Number Publication Date
CN1591325A CN1591325A (zh) 2005-03-09
CN100340975C true CN100340975C (zh) 2007-10-03

Family

ID=34372423

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100685838A Expired - Fee Related CN100340975C (zh) 2003-08-29 2004-08-27 计算机系统、编译器装置以及编译方法

Country Status (3)

Country Link
US (1) US7424578B2 (zh)
JP (1) JP4374221B2 (zh)
CN (1) CN100340975C (zh)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3973597B2 (ja) * 2003-05-14 2007-09-12 株式会社ソニー・コンピュータエンタテインメント プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置
US7346741B1 (en) * 2005-05-10 2008-03-18 Sun Microsystems, Inc. Memory latency of processors with configurable stride based pre-fetching technique
US8051272B2 (en) * 2006-05-15 2011-11-01 Samsung Electronics Co., Ltd. Method and system for generating addresses for a processor
US7383402B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for generating prefetch information for multi-block indirect memory access chains
US7383401B2 (en) * 2006-06-05 2008-06-03 Sun Microsystems, Inc. Method and system for identifying multi-block indirect memory access chains
US7761666B2 (en) * 2006-10-26 2010-07-20 Intel Corporation Temporally relevant data placement
US7904647B2 (en) * 2006-11-27 2011-03-08 Lsi Corporation System for optimizing the performance and reliability of a storage controller cache offload circuit
US20080141268A1 (en) * 2006-12-12 2008-06-12 Tirumalai Partha P Utility function execution using scout threads
WO2008078329A2 (en) * 2006-12-27 2008-07-03 More It Resources Ltd. Method and system for transaction resource control
US8387053B2 (en) * 2007-01-25 2013-02-26 Hewlett-Packard Development Company, L.P. Method and system for enhancing computer processing performance
JP4821907B2 (ja) * 2007-03-06 2011-11-24 日本電気株式会社 メモリアクセス制御システム、メモリアクセス制御方法およびそのプログラム
JP4519151B2 (ja) * 2007-03-20 2010-08-04 富士通株式会社 キャッシュ制御回路
JP2008293378A (ja) * 2007-05-25 2008-12-04 Panasonic Corp プログラム書き換え装置
US20090276574A1 (en) * 2008-04-30 2009-11-05 Kabushiki Kaisha Toshiba Arithmetic device, arithmetic method, hard disc controller, hard disc device, program converter, and compiler
JP5453825B2 (ja) * 2009-02-05 2014-03-26 日本電気株式会社 プログラム並列実行システム、マルチコアプロセッサ上のプログラム並列実行方法
JP5541491B2 (ja) * 2010-01-07 2014-07-09 日本電気株式会社 マルチプロセッサ、これを用いたコンピュータシステム、およびマルチプロセッサの処理方法
CN101807144B (zh) * 2010-03-17 2014-05-14 上海大学 一种前瞻多线程并行执行优化方法
US8490071B2 (en) * 2010-05-04 2013-07-16 International Business Machines Corporation Shared prefetching to reduce execution skew in multi-threaded systems
US8495307B2 (en) * 2010-05-11 2013-07-23 International Business Machines Corporation Target memory hierarchy specification in a multi-core computer processing system
JP5516744B2 (ja) 2010-08-27 2014-06-11 富士通株式会社 スケジューラ、マルチコアプロセッサシステムおよびスケジューリング方法
US8549379B2 (en) 2010-11-19 2013-10-01 Xilinx, Inc. Classifying a criticality of a soft error and mitigating the soft error based on the criticality
US8522091B1 (en) * 2011-11-18 2013-08-27 Xilinx, Inc. Prioritized detection of memory corruption
US20150234747A1 (en) * 2012-08-22 2015-08-20 Mitsubishi Electric Corporation Cache memory controller and cache memory control method
JP2014112327A (ja) * 2012-12-05 2014-06-19 Fujitsu Ltd 変換プログラム、変換装置及び変換方法
US9760346B2 (en) * 2013-05-31 2017-09-12 Microsoft Technology Licensing, Llc Deeply parallel source code compilation
JP5776813B2 (ja) * 2014-04-03 2015-09-09 富士通株式会社 マルチコアプロセッサシステム、マルチコアプロセッサシステムの制御方法および制御プログラム
US9645935B2 (en) * 2015-01-13 2017-05-09 International Business Machines Corporation Intelligent bandwidth shifting mechanism
JP6701650B2 (ja) * 2015-09-14 2020-05-27 富士ゼロックス株式会社 情報処理装置および画像形成装置
CN109033577B (zh) * 2018-07-11 2022-11-08 深圳市新威尔电子有限公司 基于LabVIEW的电化学工作站控制方法、上位机及存储介质
US20220171657A1 (en) * 2020-12-01 2022-06-02 International Business Machines Corporation Dynamic workload tuning
JP7049507B2 (ja) * 2021-05-19 2022-04-06 株式会社ユニバーサルエンターテインメント 遊技機
JP2023006384A (ja) 2021-06-30 2023-01-18 富士通株式会社 調整プログラムおよび調整方法
US11704245B2 (en) 2021-08-31 2023-07-18 Apple Inc. Dynamic allocation of cache memory as RAM
US11893251B2 (en) * 2021-08-31 2024-02-06 Apple Inc. Allocation of a buffer located in system memory into a cache memory
CN114721727B (zh) * 2022-06-10 2022-09-13 成都登临科技有限公司 一种处理器、电子设备及多线程共享的指令预取方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
US6480939B2 (en) * 2000-12-29 2002-11-12 Intel Corporation Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0457403B1 (en) * 1990-05-18 1998-01-21 Koninklijke Philips Electronics N.V. Multilevel instruction cache and method for using said cache
US5822759A (en) * 1996-11-22 1998-10-13 Versant Object Technology Cache system
JP3918274B2 (ja) 1998-01-27 2007-05-23 富士通株式会社 コンパイル装置、コンパイル方法およびコンパイラプログラムを記録した記録媒体
JP3913895B2 (ja) 1998-04-17 2007-05-09 富士通株式会社 命令キャッシュ制御装置および記録媒体

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5790823A (en) * 1995-07-13 1998-08-04 International Business Machines Corporation Operand prefetch table
US6480939B2 (en) * 2000-12-29 2002-11-12 Intel Corporation Method and apparatus for filtering prefetches to provide high prefetch accuracy using less hardware

Also Published As

Publication number Publication date
CN1591325A (zh) 2005-03-09
JP2005078264A (ja) 2005-03-24
JP4374221B2 (ja) 2009-12-02
US7424578B2 (en) 2008-09-09
US20050071572A1 (en) 2005-03-31

Similar Documents

Publication Publication Date Title
CN100340975C (zh) 计算机系统、编译器装置以及编译方法
CN1127016C (zh) 计算机处理装置和方法
CN100351810C (zh) 对特定指令类型的指令执行和数据访问计数的方法和系统
CN1203409C (zh) 软件调试方法和软件开发辅助方法
CN1277207C (zh) 使用基于时间的断点调试计算机程序的方法和系统
JP4621786B2 (ja) 情報処理装置、並列処理最適化方法およびプログラム
CN1627270A (zh) 用于对指令执行和数据访问进行计数的方法和设备
US20030237080A1 (en) System and method for improved register allocation in an optimizing compiler
CN1592886A (zh) 通过虚拟线程执行计算机多任务的方法及装置
CN1918546A (zh) 程序转换装置及程序转换方法
CN1181528A (zh) 二进制程序转换设备,转换方法和程序记录媒体
CN1570870A (zh) 终极管道和最优重排技术
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1783012A (zh) 程序转换器件及方法、程序转换执行器件及转换执行方法
CN1749955A (zh) 控制处理器和协处理器间的数据传输的运算处理装置
CN1804803A (zh) 具有对异步程序流程建模的软件工具
US8752056B2 (en) Running native code across single or multi-core hybrid processor achitecture
CN1278226C (zh) 模拟装置、模拟方法
CN1532666A (zh) 信息处理装置、该装置的时钟脉冲控制方法及控制程序
Hayes et al. Unified on-chip memory allocation for SIMT architecture
CN1143774A (zh) 优化器
CN1138172A (zh) 高速实现子程序返回的处理器及产生能高速从子程序返回的机器语言程序的程序翻译装置
CN1035190A (zh) 基于操作数长度和对位的微码转移
CN1604049A (zh) 用于自主剖析应用程序的方法和设备
CN1143213C (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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20151027

Address after: Kanagawa

Patentee after: Co., Ltd. Suo Si future

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co., Ltd.

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: 20071003

Termination date: 20200827