CN1637703A - 数据处理装置和编译装置 - Google Patents

数据处理装置和编译装置 Download PDF

Info

Publication number
CN1637703A
CN1637703A CN200410061588.8A CN200410061588A CN1637703A CN 1637703 A CN1637703 A CN 1637703A CN 200410061588 A CN200410061588 A CN 200410061588A CN 1637703 A CN1637703 A CN 1637703A
Authority
CN
China
Prior art keywords
data
logical address
processing
instruction
speed cache
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
CN200410061588.8A
Other languages
English (en)
Other versions
CN1326036C (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.)
Panasonic Holdings Corp
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 CN1637703A publication Critical patent/CN1637703A/zh
Application granted granted Critical
Publication of CN1326036C publication Critical patent/CN1326036C/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • 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
    • 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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • 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)

Abstract

本发明提供可以实现高速缓存的有效利用的数据处理装置,具有:高速缓存(28)和存储器(30),在由物理地址确定的各个区域内存储指令或数据;运算处理部(22),输出包含所述物理地址和表示预定处理的处理判定数据的逻辑地址,取得与该逻辑地址中包含的所述物理地址对应的所述指令或数据,并执行该指令;以及地址变换部(26),将所述运算处理部(22)输出的逻辑地址变换成所述物理地址;所述高速缓存(28)和存储器(30)读取在由所述物理地址确定的区域内存储的所述指令或所述数据,并且执行根据所述处理判定数据规定的处理。

Description

数据处理装置和编译装置
技术领域
本发明涉及数据处理装置和编译装置,特别是涉及具有高速缓存的数据处理装置和生成由该数据处理装置执行的机器语言程序的编译装置。
背景技术
在具有高速缓存的数据处理装置(计算机)中,为了提高高速缓存的命中率,人们进行了各种努力。
例如,在现有的具有高速缓存的数据处理装置中,有人提出将二维排列数据划分为瓦片状、对与各瓦片对应的各个排列进行运算的方法(例如参照日本特开平8-297605号公报)。该方法利用了数据空间的局部性,从而可以提高高速缓存的命中率。
但是,特开平8-297605号公报中记载的数据处理装置是以二维排列数据为对象,无法适用于除此以外的数据访问。因此,存在未必能一定实现高速缓存的有效利用的问题。
发明内容
为了解决上述问题,本发明的第一目的是,提供一种对于二维排列数据以外的数据访问也可以实现高速缓存的有效利用的数据处理装置。
本发明的第2目的是,提供一种生成可以由数据处理装置执行的机器语言程序的编译装置,该数据处理装置对于二维排列数据以外的数据访问也可以实现高速缓存的有效利用。
为了实现上述目的,本发明的数据处理装置具有:存储单元,在由物理地址确定的各个区域内存储指令或数据;指令执行单元,输出包含所述物理地址和表示预定处理的处理判定数据的逻辑地址,取得与该逻辑地址中包含的所述物理地址相对应的所述指令或数据,并执行该指令;以及地址变换单元,将所述指令执行单元输出的逻辑地址变换成所述物理地址;所述存储单元读取在由所述物理地址确定的区域内存储的所述指令或所述数据,并且执行根据所述处理判定数据规定的处理。
逻辑地址中,除了物理地址以外还包含表示规定处理的处理判定数据。包含指令或数据的存储单元,执行根据该处理判定数据规定的处理。因此可以有效地利用数据等的存储单元。
例如,所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;在所述逻辑地址的所述处理判定数据中包含取出对应数据,所述取出对应数据与取出存储在所述存储器中的所述指令或所述数据并存储到所述高速缓存中的处理相对应;当利用所述指令执行单元对包含所述取出对应数据的所述逻辑地址进行访问时,所述处理执行部取出在所述存储器的存储区域中存储着的所述指令或所述数据并存储到所述高速缓存中,所述存储器的存储区域由所述地址变换单元输出的所述物理地址确定。
这样,可以通过逻辑地址判断是否将数据预取到高速缓存中。因此可以进行高速的数据访问,同时可以有效地利用高速缓存。
本发明另一方面的编译装置,用于将以高级程序语言记述的源程序变换成机器语言程序,其具有:中间代码变换单元,将在所述源程序中包含的源代码变换成中间代码;最优化单元,将所述中间代码最优化;以及代码生成单元,将最优化后的所述中间代码变换成机器语言指令;所述最优化单元具有:逻辑地址生成部,根据所述中间代码,生成向访问数据时使用的物理地址附加了表示规定处理的处理判定数据后的逻辑地址;以及中间代码生成部,生成利用所述逻辑地址访问所述数据的中间代码。
逻辑地址中,除了物理地址以外还包含表示规定处理的处理判定数据。编译装置生成利用逻辑地址访问数据的中间代码。因此,在进行数据访问时,可以合并执行规定处理。
例如,在所述处理判定数据中,包含与预取在存储器中存储着的数据并存储到高速缓存中的处理对应的预取对应数据;该编译装置还具有解析引起缓存不中的数据和该数据配置位置的解析单元;所述逻辑地址生成部包括:预取判断部,在对包含于所述中间代码中的所述数据的各个访问中,根据所述解析单元的解析结果,判断是否有必要在访问之前将被访问的数据预先存储在所述高速缓存中;以及预取对应数据附加部,根据所述预取判断部的判断结果,当判断有必要在访问之前将所述数据预先存储在所述高速缓存中时,生成向该数据的逻辑地址附加了所述预取对应数据后的逻辑地址。
这样,可以在数据访问之前合并执行预取等处理。因此可以实现高速缓存的有效利用。而且可以生成由执行该处理的数据处理装置执行的机器语言程序。
另外,本发明不仅可以实现执行上述特征性指令的数据处理装置和生成特征性指令的编译装置,还可以实现包含当值指令的程序,或者实现以编译装置中包含的特征性单元为步骤的编译方法,或者实现由计算机执行该方法的程序。这样的程序当然可以通过CD-ROM等记录介质或互联网等传播介质进行流通。
本发明可以提供一种可以实现高速缓存的有效利用的数据处理装置。
而且,可以提供一种生成由可以实现高速缓存的有效利用的数据处理装置执行的机器语言程序的编译装置。
附图说明
图1所示为本发明实施例的数据处理装置的外观图。
图2所示为图1所示数据处理装置的主要硬件结构。
图3所示为逻辑地址的位构成。
图4所示为逻辑地址空间与物理地址空间的对应关系的说明图。
图5所示为利用取出空间的逻辑地址进行存储器访问时的处理流程图。
图6所示为利用预取空间的逻辑地址进行存储器访问时的处理流程图。
图7所示为利用区域预留空间的逻辑地址进行存储器访问时的处理流程图。
图8所示为详细说明图7所示的区域预留处理(S50)的流程图。
图9所示为利用非高速缓存空间的逻辑地址进行存储器访问时的处理流程图。
图10所示为利用值更新空间的逻辑地址进行存储器访问时的处理流程图。
图11所示为生成由数据处理装置20执行的可执行程序的编译装置的结构。
图12所示为逻辑地址决定部46执行的处理的流程图。
图13A~图13D所示为通过附注(pragma)指定了数据子空间的源程序的一个例子。
图14A和图14B所示为通过内部函数指定数据的子空间的源程序的一个例子。
图15A~图15C所示为没有附注或内部函数等用户指定时的源程序的一个例子。
具体实施方式
以下,参照附图说明本发明实施例的数据处理装置。
图1所示为数据处理装置的外观图。图2所示为图1所示数据处理装置的主要硬件结构图。数据处理装置20是根据可执行程序执行处理的装置,具有运算处理部22和存储器管理部24。
运算处理部22是与存储器管理部24之间进行数据(包含上述程序)交换、且按照上述程序进行运算处理的处理部。运算处理部22通过地址总线A1、以后述的32位逻辑地址访问存储器管理部24,并且通过数据总线D1或D2从存储器管理部24读出数据或将数据写入存储器管理部24。
存储器管理部24是管理用于存储数据的各种存储器的处理部,包括地址变换部26、高速缓存28和存储器30。
地址变换部26是将通过地址总线从运算处理部22获取的32位逻辑地址变换成后述的28位物理地址的处理部。另外,地址变换部26分别通过地址总线A2和A3以该物理地址访问高速缓存28和存储器30。而且,地址变换部26将控制高速缓存28的控制信号通过控制信号总线C1发送到高速缓存28。
高速缓存28是比存储器30更为高速的可访问存储装置,包括存储数据的存储部32、对高速缓存28进行各种控制的高速缓存控制器34和加法器36。高速缓存控制器34通过地址总线A4访问存储器30,并且通过数据总线D3向存储器30写入数据或从存储器30读出数据。
存储器30是用于存储数据的存储装置。存储器30中存储的各字节数据由28位物理地址指定。因此,存储器30具有256兆(=228)字节的存储容量。
图3所示为逻辑地址的位构成。逻辑地址如上所述由32位构成,后28位相当于物理地址,高4位(以下称为“空间判定位”)用于后述的空间判定。即,逻辑地址以16进制表示时,表示“0×00000000”~“0×FFFFFFFF”范围内的值。其中,高位第1位用于空间判定。从而可以最多定义16个空间。
图4所示为逻辑地址空间和物理地址空间的对应关系的说明图。逻辑地址空间分为16个子空间,各子空间由空间判定位指定。各子空间的存储容量与存储器30的存储容量相同,为256兆字节。因此,可以通过逻辑地址空间指定的数据的大小为4G(16×256兆)字节。
各子空间与物理地址空间一一对应,并且如上所述,逻辑地址的低28位与物理地址对应。如图4所示,例如访问以逻辑地址“0×0CCCCCCC”表示的数据64(变量a),意味着访问存储器30的物理地址“0×CCCCCCC”中存储的数据74(变量a)。但各子空间对应其各自空间的处理。图中,作为子空间的例子示出“取出空间”、“预取空间”、“区域预留空间”、“非高速缓存空间”以及“值更新空间”。
“取出空间”的逻辑地址为“0×00000000~0×0FFFFFFF”。“预取空间”的逻辑地址为“0×10000000~0×1FFFFFFF”。“区域预留空间”的逻辑地址为“0×20000000”~“0×2FFFFFFF”。“非高速缓存空间”的逻辑地址为“0×30000000”~“0×3FFFFFFF”。“值更新空间”的逻辑地址为“0×F0000000~0×FFFFFFFF”。即,逻辑地址的前4位表示不同的子空间。
所谓“取出空间”是指用于进行与具有高速缓存的一般数据处理装置的存储器访问相同的处理的逻辑地址空间。例如,运算处理部22在访问以“取出空间”的逻辑地址“0×0CCCCCCC”表示的数据64(变量a)时,如果变量a存储在高速缓存28中,则将变量a从高速缓存28传送到运算处理部22。如果变量a没有存储在高速缓存28中,则将在存储器30的物理地址“0×CCCCCCC”中存储的数据74(变量a)传送到高速缓存28中后,再将该数据传送到运算处理部22。
所谓“预取空间”是指为了将期望数据预取到高速缓存28中而使用的逻辑地址空间。例如,运算处理部22在访问以“预取空间”的逻辑地址“0×1CCCCCCC”表示的数据66(变量a)时,存储器30的物理地址“0×CCCCCCC”中存储的数据74(变量a)被预取到高速缓存28中。
所谓“区域预留空间”是指为了在高速缓存28中预留用于存储期望数据的区域而使用的逻辑地址空间。区域预留空间用于对在从值的写入开始的处理中使用的数据的访问。即使将该数据预取到高速缓存28中,该数据也很快被改写。因此,不将数据预取到高速缓存28中,而仅进行区域的预留。例如,当运算处理部22访问以“区域预留空间”的逻辑地址“0×2CCCCCCC”表示的数据68(变量a)时,在存储器30的物理地址“0×CCCCCCC”中存储的数据74(变量a)不存储到高速缓存28中,而是在高速缓存28中预留用于存储变量a的区域。该区域与存储器30的物理地址“0×CCCCCCC”相对应。
“非高速缓存空间”是指不通过高速缓存28而从存储器30直接读出期望数据或将期望数据直接写入存储器30时使用的逻辑地址空间。例如,运算处理部22在访问以“非高速缓存空间”的逻辑地址“0×3CCCCCCC”表示的数据70(变量a)时,在存储器30的物理地址“0×CCCCCCC”中存储的数据74(变量a)不存储到高速缓存28中,而是被传送到运算处理部22。
“值更新空间”是指对期望数据进行访问后、依照某种规则对该数据进行更新时使用的逻辑地址空间。例如,运算处理部22利用“值更新空间”的逻辑地址“0×FCCCCCCC”访问数据72(变量a)时,执行与“取出空间”同样的动作。然后使在高速缓存28中存储的变量a的值增加预先设定的值。
图5所示为根据取出空间的逻辑地址进行存储器访问时的处理流程图。运算处理部22根据取出空间的逻辑地址进行存储器访问时(S2),地址变换部26将该逻辑地址变换成物理地址(S4)。是否根据取出空间的逻辑地址进行存储器访问的判断,由地址变换部26进行,并且,在逻辑地址的高4位以16进制表示的情况下,通过判断该高4位是否为“0×0”来判断。而且,从逻辑地址向物理地址的变换,是通过抽出逻辑地址的低28位进行。
地址变换部26向高速缓存28请求该物理地址中存储的数据(S6)。在高速缓存28中有与该物理地址对应的数据时(S8的“是”),高速缓存28将该数据传送到运算处理部22。高速缓存28中不存在与该物理地址对应的数据时(S8的“否”),高速缓存28向存储器30请求在该物理地址中存储的数据(S10),然后该数据被传送到高速缓存28中并存储(S12)。然后,高速缓存28将该数据传送到运算处理部22(S14)。
图6所示为根据预取空间的逻辑地址进行存储器访问时的处理流程图。当运算处理部22根据预取空间的逻辑地址进行存储器访问时(S22),地址变换部26将该逻辑地址变换成物理地址(S24)。是否根据预取空间的逻辑地址进行存储器访问的判断,由地址变换部26进行,并且,在逻辑地址的高4位以16进制表示的情况下,通过判断该高4位是否为“0×1”来判断。从逻辑地址向物理地址的变换与上述相同。
地址变换部26向高速缓存28请求该物理地址中存储的数据(S26)。与该物理地址对应的数据存在于高速缓存28中时(S28的“是”),结束处理。与该物理地址对应的数据不存在于高速缓存28中时(S28的“否”),高速缓存28向存储器30请求在该物理地址中存储的数据(S30),然后该数据被传送到高速缓存28中并存储(S32)。
图7所示为根据区域预留空间的逻辑地址进行存储器访问时的处理流程图。当运算处理部22根据区域预留空间的逻辑地址进行存储器访问时(S42),地址变换部26将该逻辑地址变换成物理地址(S44)。是否根据区域预留空间的逻辑地址进行存储器访问的判断,由地址变换部26进行,并且,在逻辑地址的高4位以16进制表示的情况下,通过判断该高4位是否为“0×2”来判断。从逻辑地址向物理地址的变换与上述相同。
地址变换部26向高速缓存28请求在该物理地址中存储的数据(S46)。与该物理地址对应的数据存在于高速缓存28中时(S48的“是”),结束处理。与该物理地址对应的数据不存在于高速缓存28中时(S48的“否”),高速缓存28在高速缓存28中预留用于存储与该物理地址对应的数据的区域(块)(S50),然后结束处理。
图8所示为详细说明图7所示的区域预留处理(S50)的流程图。高速缓存28的高速缓存控制器34确定出存储有通过物理地址变换处理(图7的S44)求出的物理地址中所存储的数据的存储部32内的块(S72)。在此,高速缓存28采用直接映射的方式来存储数据。因此,只要物理地址确定,则存储部32内的块是唯一确定的。另外,高速缓存28的数据存储方法可以是组相联方式,也可以是全相联方式。这种情况下,有效标志(用于确定在对应块内存储的数据是否有效的数据)为假的块优先被确定为存储部32内的块。
存储部32内的块确定后,地址变换部26判断与该块对应的有效标志是否为真(S74)。有效标志为假的情况下(S74的“否”),为了使该块有效,将有效标志设定为真(S82)。然后设置该块的标记(tag)(物理地址)(S82),并结束处理。
有效标志为真的情况下(S74的“是”),高速缓存控制器34判断与该块对应的修改标志是否为真(S76)。在此,修改标志是表示在该块中存储的数据是否被更新为与存储时不同的值的标志。即,修改标志为真的情况下,表示该块中存储的数据不同于在与该块对应的存储器30中存储的数据。因此,修改标志为真的情况下(S76的“是”),高速缓存控制器34执行将在该块中存储的数据反写(write back)到对应的存储器30的存储区域中的处理(S78)。然后,高速缓存控制器34使该修改标志为假(S80),并设置该块的标记(S84)并结束处理。
有效标志为真且修改标志为假的情况下(S74的“是”和S76的“否”),高速缓存控制器34不对标志进行操作,而在向该块设置新的标记后(S84)结束处理。
如上所述地,在高速缓存28中预留用于存储数据的区域。
图9所示为根据非高速缓存空间的逻辑地址进行存储器访问时的处理流程图。运算处理部22根据非高速缓存空间的逻辑地址进行存储器访问时(S62),地址变换部26将该逻辑地址变换成物理地址(S64)。是否根据非高速缓存空间的逻辑地址进行存储器访问的判断,由地址变换部26进行,并且,在逻辑地址的高4位以16进制表示的情况下,通过判断该高4位是否为“0×3”来判断。从逻辑地址向物理地址的变换与上述相同。
地址变换部26通过根据物理地址访问存储器30来请求数据(S66)。存储器30将该物理地址中存储的数据传送到运算处理部22(S68)。
图10所示为根据值更新空间的逻辑地址进行存储器访问时的处理流程图。运算处理部22在取得数据之前的处理(S122~S134)与图5所示的运算处理部22根据取出空间的逻辑地址进行存储器访问时的处理(S2~S14)相同。因此不再重复其详细说明。运算处理部22取得数据后,高速缓存控制器34利用加法器36使该数据增加规定值(S136),然后结束处理。
图11所示为生成由数据处理装置20执行的可执行程序的编译装置的结构。
编译装置40是将以C语言等高级程序语言记述的源程序52变换成可由数据处理装置20执行的可执行程序54的装置,包括源代码解析部42、数据访问解析部44、逻辑地址决定部46、最优化部48以及目标代码生成部50。
源代码解析部42是从作为编译对象的源程序52中抽出保留字(关键词)(keyword)等后进行词法分析、并根据一定规则将源程序52的各语句变换成中间代码的处理部。
数据访问解析部44是根据进行存储器访问的数据的配置模式等来解析容易引起缓存不中的数据或位置等的处理部。数据访问解析部44所执行的处理并非本发明申请的主题,因而在此省略对其的详细说明。
逻辑地址决定部46是判别进行存储器访问的数据被配置在逻辑地址空间的哪个子空间中、并决定该数据的逻辑地址的处理部。逻辑地址决定部46所执行的处理后述。
最优化部48是执行逻辑地址决定处理以外的最优化处理的处理部。
目标代码生成部50是根据最优化后的中间代码生成目标代码、并通过与各种函数库程序(图上未示出)等链接来生成可执行程序54的处理部。
图12所示为逻辑地址决定部46所执行的处理流程图。逻辑地址决定部46对包含在中间代码中的所有数据访问重复以下处理。首先,针对该访问,逻辑地址决定部46判断用户是否指定了利用逻辑地址空间的哪个子空间进行访问(S94)。用户的指定方法包括附注指定方法和内部函数指定方法。
“附注”是指在源程序52中记载的对编译装置40的指示。图13A~图13D所示为通过附注指定数据的子空间的源程序的一个例子。
图13A的“#pragma a[45]fetch_access”是对编译装置40的“访问数组元素a[45]时,利用取出空间的逻辑地址进行访问”的指示。图13B的“#pragma a prefetch_access”是对编译装置40的“访问数组a之前,将数组a预取到高速缓存28中”的指示。
图13C的“#pragma a book_access”是对编译装置40的“在高速缓存28中预留用于存储数组a的区域”的指示。
图13D的“#pragma z uncache_access”是对编译装置40的“访问变量z时,利用非高速缓存空间的逻辑地址进行访问”的指示。
图14A和图14B所示为通过内部函数指定了数据的子空间的源程序的一个例子。图14A的“prefetch(a[i])”是记载了预取出数组元素a[i]的指令的内部函数。图14B的“book(a[i])”是记载了在高速缓存28中预留用于存储数组元素a[i]的区域的指令的内部函数。
图15A~图15C所示为没有附注或内部函数等用户指定情况下的源程序的一个例子。图15A表示将数组元素a[45]的值代入变量sum的处理。图15B表示将数组a的各元素依次加到变量sum上的处理。图15C表示将循环计数器i的值依次代入数组元素a[i]的处理。
在具有利用图13A~图14B所示的附注或内部函数进行的用户指定的情况下(S94的“是”),利用该指定所指示的逻辑地址(S96)。例如,对于图13A所示的附注指定,假设数组元素a[45]的物理地址为“0×1234567”时,向该物理地址的先头部分附加表示取出空间的4位数据“0×0”,生成逻辑地址“0×01234567”。在访问数组元素a[45]时,使用该逻辑地址。
然后,如果需要,逻辑地址决定部46执行访问代码的插入(S98)。访问代码的插入,是在预取空间中的数据访问和区域预留空间中的数据访问的情况下进行。
例如,如图13B所示,通过附注指定了预取空间中的数据访问时,在实际进行数据访问之前必须完成数据的预取。因此,考虑到存储器访问的等待时间,将预取空间访问代码插入到中间代码的最佳位置。预取空间访问代码的详细处理如参照图6的说明。
如图14A所示,通过内部函数指定了预取空间中的数据访问时,将预取空间访问代码插入到与该内部函数所记载的位置对应的中间代码的位置。这样,程序在充分考虑到存储器访问的等待时间的基础上,必须确定源程序52中内部函数的位置。
在利用图13C所示的附注指定了区域预留空间中的数据访问和利用图14B所示的内部函数指定了区域预留空间中的数据访问的情况下,与指定了预取空间中的数据访问的情况相同,插入区域预留空间访问代码。区域预留空间访问代码的详细处理与参照图7进行的说明相同。
在没有关于数据访问的用户指定时(S94的“否”),逻辑地址决定部46根据数据访问解析部44的解析结果,判断该数据访问中是否发生缓存不中(S100)。在没有发生缓存不中的情况下(S100的“否”),生成在取出空间进行该数据访问的逻辑地址,然后生成利用该逻辑地址进行数据访问的代码(S102)。
在发生缓存不中的情况下(S100的“是”),逻辑地址决定部46判断是否有必要防止缓存不中(S104)。例如,该判断也可以依照编译选项等。
在没有必要防止缓存不中的情况下(S104的“是”),生成使用取出空间进行该数据访问的代码(S106)。然后,逻辑地址决定部46根据数据访问解析部44的解析结果,判断该数据是否用于从对该数据存储区域的写入开始的处理中(S108)。即,判断该数据是否未被参照就被更改。例如,如图15C所示的数组元素a[i],不参照数组元素a[i]的值,而是写入变量i的值(S108“是”),因此不必在访问之前将该数据预取到高速缓存28中。因而,在进行该数据访问之前,在高速缓存28中预留用于存储该数据的区域。因此插入区域预留空间访问代码。区域预留空间访问代码的插入位置是考虑存储器访问的等待时间后确定。区域预留空间访问代码的详细处理与参照图7进行的说明相同。
在被访问数据用于从写入开始的处理之外的情况下(例如,图15B所示的数组元素a[i])(S108的“否”),为了进行高速的数据访问,在访问之前将该数据预取到高速缓存28中。因此插入预取空间访问代码。预取空间访问代码的插入位置是考虑存储器访问的等待时间而确定,并且插入到预取动作在实际进行数据访问的时刻结束的位置上。预取空间访问代码的详细说明与参照图6进行的说明相同。
在没有必要防止缓存不中的情况下(S104的“否”),逻辑地址决定部46根据数据访问解析部44的解析结果,判断是否有必要将作为对象的数据存储到高速缓存28中(S114)。例如,由于将该数据存储到高速缓存28中而去掉了频繁使用的数据、引起缓存不中的情况下,或者是仅使用过一次的数据(例如,图15A所示的数组元素a[45])的情况下,判断为没有必要将该数据存储到高速缓存28中;其余情况下判断为有必要存储到高速缓存28中。
判断有必要将作为对象的数据存储到高速缓存28中时(S114的“是”),生成利用逻辑地址空间的取出空间访问该数据的代码(S118)。即,向物理地址的先头部分附加表示取出空间的4位数据“0×0”后,生成逻辑地址。
判断没有必要将作为对象的数据存储到高速缓存28中时(S114的“否”),生成利用逻辑地址空间的非高速缓存空间访问该数据的代码(S116)。即,向物理地址的先头部分附加表示非高速缓存空间的4位数据“0×3”后,生成逻辑地址。
逻辑地址决定部46对所有的数据访问执行上述处理(S94~S118)(循环1)后,结束处理。
如上述说明,根据本发明的实施方式,利用在物理地址中附加有空间判定位的逻辑地址进行数据访问。因此可以向数据访问附加规定处理。例如,如上所述,可以在数据访问之前将数据预取到高速缓存中。因而,可以有效地利用高速缓存。
另外,还可以提供一种生成由这样的数据处理装置执行的机器语言程序的编译装置。
以上说明的实施方式不过是本发明的一个例子,本发明并不限于上述实施例。
例如,上述逻辑地址空间的子空间不过是一个例子,也可以使其执行其他处理。例如,“值更新空间”中的值更新方法并不仅限于加法运算,也可以是减法运算、乘法运算以及除法运算等四则运算,还可以是逻辑运算。而且,可以执行更为复杂的处理来对值进行更新。
另外,还可以通过访问子空间来向数据处理装置所具有的其它硬件发出执行指示。例如,作为子空间的一个例子,还可以设有“对硬件A的指示空间”。在利用该子空间的逻辑地址进行数据访问时,从高速缓存28或存储器30读出该数据并传送到硬件A。硬件A以该数据的传送为触发开始处理。此时,该硬件A也可以利用该数据进行规定处理。另外,作为子空间的另一个例子,还可以设有“对硬件B的指示空间”。在利用该子空间的逻辑地址访问数据时,硬件B以对该数据的访问为触发开始规定处理。
工业实用性
本发明可以适用于具有高速缓存的处理器等。

Claims (15)

1.一种数据处理装置,其特征在于,
具有:存储单元,在由物理地址确定的各个区域内存储指令或数据;指令执行单元,输出包含所述物理地址和表示预定处理的处理判定数据的逻辑地址,取得与该逻辑地址中包含的所述物理地址相对应的所述指令或数据,并执行该指令;以及地址变换单元,将所述指令执行单元输出的逻辑地址变换成所述物理地址;
所述存储单元读取在由所述物理地址确定的区域内存储的所述指令或所述数据,并且执行根据所述处理判定数据规定的处理。
2.如权利要求1所述的数据处理装置,其特征在于,
所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;
在所述逻辑地址的所述处理判定数据中包含取出对应数据,所述取出对应数据与取出存储在所述存储器中的所述指令或所述数据并存储到所述高速缓存中的处理相对应;
当利用所述指令执行单元对包含所述取出对应数据的所述逻辑地址进行访问时,所述处理执行部取出在所述存储器的存储区域中存储着的所述指令或所述数据并存储到所述高速缓存中,所述存储器的存储区域由所述地址变换单元输出的所述物理地址确定。
3.如权利要求1所述的数据处理装置,其特征在于,
所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;
在所述逻辑地址的所述处理判定数据中包含预取对应数据,所述预取对应数据与预取存储在所述存储器中的所述指令或所述数据并存储到所述高速缓存中的处理相对应;
当利用所述指令执行单元对包含所述预取对应数据的所述逻辑地址进行访问时,所述处理执行部预取在所述存储器的存储区域中存储着的所述指令或所述数据并存储到所述高速缓存中,所述存储器的存储区域由所述地址变换单元输出的所述物理地址确定。
4.如权利要求1所述的数据处理装置,其特征在于,
所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;
所述逻辑地址的所述处理判定数据中包含区域预留对应数据,该区域预留对应数据与在所述高速缓存中预留用于存储在所述存储器中存储着的所述指令或所述数据的区域的处理相对应;
当利用所述指令执行单元对包含所述区域预留对应数据的所述逻辑地址进行访问时,所述处理执行部在所述高速缓存中预留用于存储在所述存储器的存储区域中存储着的所述指令或所述数据的区域,所述存储器的存储区域由所述地址变换单元输出的所述物理地址确定。
5.如权利要求1所述的数据处理装置,其特征在于,
所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;
在所述逻辑地址的所述处理判定数据中包含非高速缓存对应数据,该非高速缓存对应数据与不将在所述存储器中存储着的所述指令或所述数据存储到所述高速缓存中、而是将其传送给所述指令执行单元的处理相对应;
当利用所述指令执行单元对包含所述非高速缓存对应数据的所述逻辑地址进行访问时,所述处理执行部不将所述指令或所述数据存储在由所述地址变换单元所输出的所述物理地址确定的所述高速缓存的存储区域内,而是与所述处理执行部之间交换在所述存储器的该物理地址中存储的所述指令或所述数据。
6.如权利要求1所述的数据处理装置,其特征在于,
所述存储单元具有:存储器,在由所述物理地址确定的各个区域内存储所述指令或所述数据;高速缓存,在由所述物理地址确定的各个区域内存储所述指令或所述数据,并且可以比所述存储器更高速地进行数据的读取和写入;以及处理执行部,执行根据所述处理判定数据规定的处理;
在所述逻辑地址的所述处理判定数据中包含值更新对应数据,该值更新对应数据与在访问存储在所述存储器或所述高速缓存中的所述数据后、按照既定规则更新该数据的处理相对应;
当利用所述指令执行单元对包含所述值更新对应数据的所述逻辑地址进行访问时,所述处理执行部在访问该数据后按照既定规则更新在所述存储器或所述高速缓存的存储区域内存储的所述数据,所述存储器或所述高速缓存的存储区域由所述地址变换单元输出的所述物理地址确定。
7.一种可由数据处理装置执行的程序,其特征在于,
具有:存储单元,在由物理地址确定的各个区域内存储指令或数据;指令执行单元,输出包含所述物理地址和表示预定处理的处理判定数据的逻辑地址,取得与该逻辑地址中包含的所述物理地址相对应的所述指令或所述数据,并执行该指令;以及地址变换单元,将所述指令执行单元输出的逻辑地址变换成所述物理地址;
所述存储单元读取在由所述物理地址确定的区域内存储的所述指令或所述数据,并且执行根据所述处理判定数据规定的处理;
所述程序包含利用所述逻辑地址访问所述存储单元的机器语言指令。
8.一种编译装置,用于将以高级程序语言记述的源程序变换成机器语言程序,其特征在于,
其具有:中间代码变换单元,将在所述源程序中包含的源代码变换成中间代码;最优化单元,将所述中间代码最优化;以及代码生成单元,将最优化后的所述中间代码变换成机器语言指令;
所述最优化单元具有:逻辑地址生成部,根据所述中间代码,生成向访问数据时使用的物理地址附加了表示规定处理的处理判定数据后的逻辑地址;以及中间代码生成部,生成利用所述逻辑地址访问所述数据的中间代码。
9.如权利要求8所述的编译装置,其特征在于,
所述逻辑地址生成部包括:指示调查部,在对包含于所述中间代码中的所述数据的各个访问中,调查在所述源程序中是否包含对该访问的处理指示;以及处理判定数据附加部,在包含所述指示的情况下,向该数据的物理地址附加与该指示所决定的处理对应的处理判定数据,生成逻辑地址。
10.如权利要求8所述的编译装置,其特征在于,
在所述处理判定数据中,包含与取出在存储器中存储着的数据并存储到高速缓存中的处理对应的取出对应数据;
该编译装置还具有解析引起缓存不中的数据和该数据的配置位置的解析单元;
所述逻辑地址生成部包括:缓存不中判断部,在对包含于所述中间代码中的所述数据的各个访问中,根据所述解析单元的解析结果,判断被访问的数据是否引起缓存不中;以及取出对应数据附加部,根据所述缓存不中判断部的判断结果,当判断为所述数据不引起缓存不中时,生成向该数据的逻辑地址附加了所述取出对应数据后的逻辑地址。
11.如权利要求8所述的编译装置,其特征在于,
在所述处理判定数据中,包含与预取在存储器中存储着的数据并存储到高速缓存中的处理对应的预取对应数据;
该编译装置还具有解析引起缓存不中的数据和该数据的配置位置的解析单元;
所述逻辑地址生成部包括:预取判断部,在对包含于所述中间代码中的所述数据的各个访问中,根据所述解析单元的解析结果,判断是否有必要在访问之前将被访问的数据预先存储在所述高速缓存中;以及预取对应数据附加部,根据所述预取判断部的判断结果,当判断为有必要在访问之前将所述数据预先存储在所述高速缓存中时,生成向该数据的逻辑地址附加了所述预取对应数据后的逻辑地址。
12.如权利要求8所述的编译装置,其特征在于,
在所述处理判定数据中包含区域预留对应数据,所述区域预留对应数据与在高速缓存中预留用于存储在存储器中存储着的数据的区域的处理对应;
该编译装置还具有解析数据是否用于从写入开始的处理中的解析单元;
所述逻辑地址生成部在对包含于所述中间代码中的所述数据的各个访问中,根据所述解析单元的解析结果,当被访问的数据用于从写入开始的处理中时,生成向该数据的逻辑地址附加了所述区域预留对应数据后的逻辑地址。
13.如权利要求8所述的编译装置,其特征在于,
在所述处理判定数据中,包含与不将存储在存储器中的数据存储到所述高速缓存中而是传送到执行指令的指令执行单元的处理对应的非高速缓存对应数据;
该编译装置还具有解析引起缓存不中的数据和该数据的配置位置的解析单元;
所述逻辑地址生成部包括:存储判断部,在对包含于所述中间代码中的所述数据的各个访问中,根据所述解析单元的解析结果,判断是否有必要将被访问的数据存储到所述高速缓存中;以及非高速缓存对应数据附加部,根据所述存储判断部的判断结果,当判断为没有必要将所述数据存储到所述高速缓存中时,生成向该数据的逻辑地址附加了所述非高速缓存对应数据后的逻辑地址。
14.一种编译方法,将用高级程序语言记述的源程序变换成机器语言程序,其特征在于,
包括:中间代码变换步骤,将所述源程序中包含的源代码变换成中间代码;最优化步骤,将所述中间代码最优化;以及代码生成步骤,将最优化后的所述中间代码变换成机器语言指令;
所述最优化步骤包括:逻辑地址生成子步骤,根据所述中间代码,生成向访问数据时使用的物理地址附加了表示规定处理的处理判定数据后的逻辑地址;以及中间代码生成子步骤,生成利用所述逻辑地址访问所述数据的中间代码。
15.一种编译程序,将用高级程序语言记述的源程序变换成机器语言程序,其特征在于,
在计算机上执行如下步骤:中间代码变换步骤,将所述源程序中包含的源代码变换成中间代码;最优化步骤,将所述中间代码最优化;以及代码生成步骤,将最优化后的所述中间代码变换成机器语言指令;
所述最优化步骤包括:逻辑地址生成子步骤,根据所述中间代码,生成向访问数据时使用的物理地址附加了表示规定处理的处理判定数据后的逻辑地址;以及中间代码生成子步骤,生成利用所述逻辑地址访问所述数据的中间代码。
CNB2004100615888A 2003-12-25 2004-12-27 数据处理装置、数据处理方法和编译装置及编译方法 Expired - Fee Related CN1326036C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP430546/2003 2003-12-25
JP2003430546A JP2005190161A (ja) 2003-12-25 2003-12-25 データ処理装置およびコンパイラ装置

Publications (2)

Publication Number Publication Date
CN1637703A true CN1637703A (zh) 2005-07-13
CN1326036C CN1326036C (zh) 2007-07-11

Family

ID=34697615

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100615888A Expired - Fee Related CN1326036C (zh) 2003-12-25 2004-12-27 数据处理装置、数据处理方法和编译装置及编译方法

Country Status (3)

Country Link
US (1) US20050144420A1 (zh)
JP (1) JP2005190161A (zh)
CN (1) CN1326036C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015061970A1 (zh) * 2013-10-29 2015-05-07 华为技术有限公司 一种访问内存的方法及设备

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8266605B2 (en) * 2006-02-22 2012-09-11 Wind River Systems, Inc. Method and system for optimizing performance based on cache analysis
CN102722451B (zh) * 2012-06-25 2015-04-15 杭州中天微系统有限公司 采用物理地址预测访问高速缓存的装置
US10402355B2 (en) 2017-02-08 2019-09-03 Texas Instruments Incorporated Apparatus and mechanism to bypass PCIe address translation by using alternative routing

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ZA954460B (en) * 1994-09-30 1996-02-05 Intel Corp Method and apparatus for processing memory-type information within a microprocessor
TW335466B (en) * 1995-02-28 1998-07-01 Hitachi Ltd Data processor and shade processor
JPH10207770A (ja) * 1997-01-20 1998-08-07 Fujitsu Ltd 複数のキャッシュ・メモリを備えたデータ処理装置
US6216215B1 (en) * 1998-04-02 2001-04-10 Intel Corporation Method and apparatus for senior loads
US6668307B1 (en) * 2000-09-29 2003-12-23 Sun Microsystems, Inc. System and method for a software controlled cache
JPWO2003009301A1 (ja) * 2001-07-17 2004-11-11 三菱電機株式会社 記憶装置
US6839826B2 (en) * 2002-02-06 2005-01-04 Sandisk Corporation Memory device with pointer structure to map logical to physical addresses

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015061970A1 (zh) * 2013-10-29 2015-05-07 华为技术有限公司 一种访问内存的方法及设备

Also Published As

Publication number Publication date
US20050144420A1 (en) 2005-06-30
JP2005190161A (ja) 2005-07-14
CN1326036C (zh) 2007-07-11

Similar Documents

Publication Publication Date Title
US8490065B2 (en) Method and apparatus for software-assisted data cache and prefetch control
Peled et al. Semantic locality and context-based prefetching using reinforcement learning
CN1269042C (zh) 具有预取指令的微处理器及预取至其高速缓存的方法
US7424578B2 (en) Computer system, compiler apparatus, and operating system
US7318223B2 (en) Method and apparatus for a generic language interface to apply loop optimization transformations
CN1315060C (zh) 储存存储器型式数据的转译旁视缓冲器
US10592430B2 (en) Memory structure comprising scratchpad memory
US7657729B2 (en) Efficient multiple-table reference prediction mechanism
US7516279B2 (en) Method using stream prefetching history to improve data prefetching performance.
CN1846200A (zh) 在处理器中用于减少功耗的微变换检测缓冲器及微标记符
CN1804816A (zh) 用于程序员控制的超高速缓冲存储器线回收策略的方法
US6968429B2 (en) Method and apparatus for controlling line eviction in a cache
US6668307B1 (en) System and method for a software controlled cache
US20180300258A1 (en) Access rank aware cache replacement policy
JP2006260096A (ja) プログラム変換方法およびプログラム変換装置
JP2005122506A (ja) コンパイラ装置
US7243195B2 (en) Software managed cache optimization system and method for multi-processing systems
US20070240117A1 (en) Method and system for optimizing performance based on cache analysis
US20050138329A1 (en) Methods and apparatus to dynamically insert prefetch instructions based on garbage collector analysis and layout of objects
CN1637703A (zh) 数据处理装置和编译装置
JP2005149497A (ja) 動的頻発命令ライン・キャッシュ
JP5520098B2 (ja) データ処理方法、プログラムおよびシステム
US8166252B2 (en) Processor and prefetch support program
JP5238797B2 (ja) コンパイラ装置
Chakraborty et al. Integrating software caches with scratch pad memory

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20070711

Termination date: 20100127