CN115952112A - 处理器和运算处理方法 - Google Patents
处理器和运算处理方法 Download PDFInfo
- Publication number
- CN115952112A CN115952112A CN202211084268.9A CN202211084268A CN115952112A CN 115952112 A CN115952112 A CN 115952112A CN 202211084268 A CN202211084268 A CN 202211084268A CN 115952112 A CN115952112 A CN 115952112A
- Authority
- CN
- China
- Prior art keywords
- tag
- address
- determination unit
- unit
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 10
- 238000003860 storage Methods 0.000 claims abstract description 18
- 238000006243 chemical reaction Methods 0.000 description 52
- 102100024342 Contactin-2 Human genes 0.000 description 26
- 101000690440 Solanum lycopersicum Floral homeotic protein AGAMOUS Proteins 0.000 description 26
- 102100021469 Equilibrative nucleoside transporter 1 Human genes 0.000 description 24
- 101000822020 Homo sapiens Equilibrative nucleoside transporter 1 Proteins 0.000 description 24
- 102100021468 Equilibrative nucleoside transporter 2 Human genes 0.000 description 23
- 101000822017 Homo sapiens Equilibrative nucleoside transporter 2 Proteins 0.000 description 23
- 101100464782 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CMP2 gene Proteins 0.000 description 22
- 238000012545 processing Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- BDEDPKFUFGCVCJ-UHFFFAOYSA-N 3,6-dihydroxy-8,8-dimethyl-1-oxo-3,4,7,9-tetrahydrocyclopenta[h]isochromene-5-carbaldehyde Chemical compound O=C1OC(O)CC(C(C=O)=C2O)=C1C1=C2CC(C)(C)C1 BDEDPKFUFGCVCJ-UHFFFAOYSA-N 0.000 description 17
- 101000915578 Homo sapiens Zinc finger HIT domain-containing protein 3 Proteins 0.000 description 17
- 102100028598 Zinc finger HIT domain-containing protein 3 Human genes 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 101100485276 Arabidopsis thaliana XPO1 gene Proteins 0.000 description 12
- 101100407739 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) PET18 gene Proteins 0.000 description 12
- 102100035594 Cohesin subunit SA-3 Human genes 0.000 description 9
- 101000642965 Homo sapiens Cohesin subunit SA-3 Proteins 0.000 description 9
- 101100464779 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) CNA1 gene Proteins 0.000 description 9
- 102100035595 Cohesin subunit SA-2 Human genes 0.000 description 7
- 101000642968 Homo sapiens Cohesin subunit SA-2 Proteins 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 239000000470 constituent Substances 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 3
- 239000003999 initiator Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 239000006185 dispersion Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0846—Cache with multiple tag or data arrays being simultaneously accessible
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0864—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
涉及处理器和运算处理方法。处理器包括:请求发出单元,发出对存储装置的访问请求;数据阵列,包括保存子数据的存储体,子数据是从基于访问请求从存储装置读取的数据划分的;开关,将访问请求传送到存储体之一;第一确定单元和第二确定单元。第一确定单元在访问地址中包括的标签地址与同访问地址中包括的索引地址相对应地保存在第一确定单元中的标签地址相匹配时,确定缓存命中。第二确定单元在与访问地址中包括的第一标签地址相对应的标识信息和访问地址中包括的第二标签地址与保存在第二确定单元中的标识信息和第二标签地址相匹配时,确定缓存命中。缓存控制器基于第一确定单元或第二确定单元的确定结果来对数据阵列或存储装置进行访问。
Description
技术领域
本发明涉及处理器和处理方法。处理器有时也可以称为运算处理单元、处理单元等。运算处理方法有时也可以简单地称为处理方法。
背景技术
安装在处理器例如中央处理单元(CPU)等中的缓存(cache)保存存储在主存储器中的数据的一部分。当缓存保存从运算单元发出的存储器访问请求的目标数据并且发生缓存命中时,缓存将保存在缓存中的数据传送到运算单元,而无需向主存储器发出存储器访问请求。作为结果,提高了数据访问效率,并且提高了CPU的处理性能。
例如,如在日本公开特许公报第2007-504552号中提出的,缓存包括保存数据的数据阵列和确定要访问的目标数据是否保存在数据阵列中的标签阵列。例如,例如如在日本公开特许公报第2020-536308号中提出的,高性能处理器具有各自包括多条路的分级缓存。另外,例如如在日本公开特许公报第H08-320829中提出的,处理器可以具有多个存储体(bank),以便提高缓存的吞吐量。
例如,如果一个缓存行(即缓存的管理单位)的数据被划分成多个数据并且保存在缓存的多个存储体中,则标签阵列的数量随着存储体数量的增加而增加,从而增加标签阵列的位数相对于一个缓存行的数据的比率。此外,在能够执行单指令多数据(SIMD)运算指令的处理器中,缓存的存储体的数量趋于增加。
发明内容
根据一个方面,本发明的一个目的是减小确定包括多个存储体的缓存的缓存命中的确定单元的大小(size)相对于缓存的大小的比率。
根据实施方式的一个方面,处理器包括:多个请求发出单元,每个请求发出单元被配置成发出对存储装置的存储器访问请求;数据阵列,包括多个存储体,每个存储体被配置成保存子数据,所述子数据是从基于存储器访问请求从存储装置读取的数据划分的;开关,其被配置成将存储器访问请求传送到多个存储体之一;至少一个第一确定单元,其包括第一保存单元,所述第一保存单元针对存储器访问请求中包括的访问地址中的索引地址的每个值保存访问地址中包括的标签地址,并且至少一个第一确定单元被配置成当访问地址中包括的标签地址与同访问地址中包括的索引地址相对应地保存在第一保存单元中的标签地址相匹配时,确定缓存命中,其中所述缓存命中指示访问目标数据被保存在数据阵列中;至少一个第二确定单元,其包括第二保存单元,所述第二保存单元针对索引地址的每个值保存对标签地址中包括的第一标签地址进行标识的标识信息和标签地址中包括的第二标签地址,并且至少一个第二确定单元被配置成当与访问地址中包括的第一标签地址相对应的标识信息和访问地址中包括的第二标签地址分别与同访问地址中包括的索引地址相对应地保存在第二保存单元中的标识信息和第二标签地址相匹配时,确定缓存命中;以及缓存控制器,其被配置成基于第一确定单元或第二确定单元的确定结果来对数据阵列或存储装置进行访问。
本发明的目的和优点将借助于权利要求中特别指出的要素和组合来实现和获得。
应当理解的是,前述一般描述和以下详细描述两者是示例性的和说明性的,而并非是对所要求保护的本发明进行限制。
附图说明
图1是示出根据第一实施方式的处理器的示例的框图;
图2是用于说明保存在图1所示的缓存中的数据的示例的图;
图3是用于说明保存在图1所示的缓存中的数据的另一示例的图;
图4是示出图1所示的处理器的存储器访问操作的示例的流程图;
图5是示出根据第二实施方式的处理器的示例的框图;
图6是示出图5所示的子标签单元的示例的框图;
图7是示出图5所示的处理器的存储器访问操作的示例的流程图;
图8是示出根据第三实施方式的处理器的子标签单元的示例的框图;
图9是示出根据第四实施方式的处理器的示例的框图;
图10是用于说明图9所示的加载存储单元中的地址计算的示例的图;
图11是示出根据第五实施方式的主标签单元和子标签单元的配置的示例的框图;
图12是示出根据第六实施方式的主标签单元和子标签单元的配置的示例的框图;
图13是示出根据第七实施方式的主标签单元和子标签单元的配置的示例的框图;
图14是示出根据图12所示的配置示例4的处理器的示例的框图;
图15是示出根据第八实施方式的处理器的主标签单元和子标签单元的示例的框图;
图16是用于说明针对缓存的每个配置的标签阵列/数据阵列比率的示例的图;以及
图17是用于说明在提供标签阵列缓存的情况下提高标签阵列/数据阵列比率的效果的示例的图。
具体实施方式
将参照附图来描述本发明的优选实施方式。
图1示出了根据第一实施方式的处理器的示例。图1所示的处理器100可以是例如使用单指令多数据(SIMD)运算指令执行操作的中央处理单元(CPU)等。处理器100可以使用SIMD运算指令并行地执行多个乘积和运算。
处理器100包括m+1个加载存储单元(load store unit)LDST(LDST#0至LDST#m)以及连接至主存储器50的缓存60,其中,m是大于或等于1的整数。加载存储单元LDST是向主存储器50发出存储器访问请求的请求发出单元的示例。主存储器50是存储装置的示例。相对于加载存储单元LDST,缓存60作为保存存储在主存储器50中的数据的一部分的1级(L1)数据缓存来操作。
缓存60包括仲裁单元10、开关20、一个主标签单元MTAG、n个子标签单元STAG(STAG#0至STAG#n)、数据阵列30和缓存控制器40,其中,n是大于或等于1的整数。缓存控制器40控制缓存60的整个操作。缓存控制器40可以被布置在缓存60之外。主标签单元MTAG是第一确定单元的示例,以及子标签单元STAG是第二确定单元的示例。
数据阵列30包括与主标签单元MTAG和子标签单元STAG中的每一个相对应的n+1个存储体BK(BK#0至BK#n)。通过将数据阵列30划分成多个存储体BK,可以改善所谓的聚集/分散性能。
另外,缓存60可以经由较低级缓存(例如2级(L2)缓存等)连接至主存储器50。缓存60可以包括最少两个存储体BK#0和BK#1。在这种情况下,缓存60包括一个主标签单元MTAG和一个子标签单元STAG。
处理器100包括未示出的指令提取单元、指令解码器、保留站、包括各种计算元件的运算单元、寄存器文件等。图1示出了主要与存储器访问相关的块或组成元件。例如,指令提取单元、指令解码器、保留站、包括各种计算元件的运算单元、寄存器文件和加载存储单元LDST被包括在未示出的CPU核中。
在执行加载指令时,加载存储单元LDST经由开关(switch)20输出对由地址AD指示的存储体BK的存储器访问请求,并且经由开关20从存储体BK接收读取的数据。地址AD包括标签地址TAG、索引地址IDX、偏移地址和存储体地址BA。地址AD是包括在存储器访问请求中的访问地址的示例。对应于加载指令而发出的存储器访问请求包括访问目标的地址AD和指示读取请求的读取控制信息。
在执行存储指令时,加载存储单元LDST经由开关20输出对由地址AD指示的存储体BK的存储器访问请求。对应于存储指令而发出的存储器访问请求包括访问目标的地址AD、写入数据和指示写入请求的写入控制信息。
m+1个加载存储单元LDST彼此独立地接收加载指令或存储指令,并且彼此独立地输出存储器访问请求。出于该原因,针对一个存储体BK可能发生存储器访问请求的竞争。当发生存储器访问请求的竞争时,仲裁单元10选择存储器访问请求之一。在本实施方式和稍后将描述的实施方式中,将描述其中执行加载指令的加载存储单元LDST发出存储器访问请求(读取请求)的示例。
开关20将存储器访问请求输出到由存储器访问请求中包括的存储体地址BA指示的存储体BK。相对于加载指令输出存储器访问请求的开关20从存储体BK接收读取的数据DT,并且将接收到的读取的数据DT输出到作为存储器访问请求的发起者或发出源的加载存储单元LDST。
主标签单元MTAG包括标签阵列TGA和比较器CMP1。标签阵列TGA是第一保存单元的示例。标签阵列TGA包括用于针对索引地址IDX的每个值保存标签地址TAG的多个条目。例如,在索引地址IDX具有10位的情况下,标签阵列TGA包括1024个条目。标签阵列TGA将存储在与从开关20接收的索引地址IDX相对应的条目中的标签地址TAG输出至比较器CMP1。
比较器CMP1将从标签阵列TGA输出的标签地址TAG与从开关20输出的标签地址TAG进行比较。当被比较的两个标签地址TAG匹配时,比较器CMP1输出具有有效电平(缓存命中)的命中信号HIT,而当被比较的两个标签地址TAG不匹配时,比较器CMP1输出具有无效电平(缓存未命中)的命中信号HIT。
缓存命中指示存储器访问请求的访问目标数据保存在作为数据阵列30的访问目标的存储体BK中。缓存未命中指示存储器访问请求的访问目标数据未保存在作为数据阵列30的访问目标的存储体BK中。在这种情况下,缓存60从主存储器50读取数据,即访问目标数据。
子标签单元STAG包括标签转换单元TCNV、标签阵列缓存TGAC和比较器CMP2。标签转换单元TCNV是第三保存单元的示例,以及标签阵列缓存TGAC是第二保存单元的示例。标签转换单元TCNV包括可由标识信息ID标识的多个条目。例如,在标识信息ID具有2位的情况下,标签转换单元TCNV包括4个条目。标签转换单元TCNV的条目的数量小于标签阵列缓存TGAC的条目的数量。
标签转换单元TCNV的每个条目存储第一标签地址TAG1,该第一标签地址TAG1是标签地址TAG的位的一部分。在标签转换单元TCNV的条目之一存储了包括在存储器访问请求中的第一标签地址TAG1的情况下,标签转换单元TCNV将该条目的标识信息ID输出到比较器CMP2。因此,标签转换单元TCNV用作内容可寻址存储器(CAM),其输出指示保存所接收的第一标签地址TAG1的条目的标识信息ID。可以在子标签单元STAG中提供不同于标签转换单元TCNV的元件,如果可以实现第一标签地址TAG1与用于标识第一标签地址TAG1的标识信息ID之间的对应性的话。
标签阵列缓存TGAC包括用于针对索引地址IDX的每个值保存标识信息ID和第二标签地址TAG2的多个条目。第二标签地址TAG2由标签地址TAG的与第一标签地址TAG1的位不同的位指示。例如,通过连接第一标签地址TAG1的位和第二标签地址TAG2的位来形成标签地址TAG。标签阵列缓存TGAC将保存在与从开关20输出的索引地址IDX相对应的条目中的标识信息ID和第二标签地址TAG2输出到比较器CMP2。
比较器CMP2将从标签转换单元TCNV输出的标识信息ID与从标签阵列缓存TGAC输出的标识信息ID进行比较。另外,比较器CMP2将从开关20输出的第二标签地址TAG2与从标签阵列缓存TGAC输出的第二标签地址TAG2进行比较。
当被比较的两个标识信息ID匹配并且被比较的两个第二标签地址TAG2也匹配时,比较器CMP2输出具有有效电平(缓存命中)的命中信号HIT。当被比较的两个标识信息ID不匹配并且被比较的两个第二标签地址TAG2也不匹配,或者被比较的两个标识信息ID不匹配,或者被比较的两个第二标签地址TAG2不匹配时,比较器CMP2输出具有无效电平(缓存未命中)的命中信号HIT。
与主标签单元MTAG的缓存命中类似,子标签单元STAG的缓存命中指示存储器访问请求的访问目标数据被保存在作为数据阵列30的访问目标的存储体BK中。与主标签单元MTAG的缓存未命中类似,子标签单元STAG的缓存未命中指示存储器访问请求的访问目标数据未保存在作为数据阵列30的访问目标的存储体BK中。
例如,在一个示例中,标签地址TAG具有36位,第一标签地址TAG1具有28位,第二标签地址TAG2具有8位,标识信息ID具有2位,并且索引地址IDX具有10位。在这种情况下,与标签阵列TGA的存储区域相比,标签阵列缓存TGAC的存储区域可以减少大约26千位((28-2)*1024,其中,符号“*”表示乘法)。标签转换单元TCNV的存储区域是120位((28+2)*4)。
比较器CMP1对36位标签地址TAG进行比较,而比较器CMP2对2位标识信息ID与8位第二标签地址TAG2的10位组合进行比较。出于该原因,子标签单元STAG的电路规模变得小于主标签单元MTAG的电路规模。因此,与针对每个存储体BK提供主标签单元MTAG的情况相比,处理器100可以减小用于确定缓存命中的确定电路的规模。作为结果,与其中针对每个存储体BK提供主标签单元MTAG的处理器相比,可以降低处理器100的制造成本等。
每个存储体BK包括用于针对索引地址IDX的每个值保存子数据SDT的多个条目。子数据SDT具有通过将缓存行大小除以存储体BK的数量而获得的大小。稍后将结合图2和图3来描述子数据SDT的大小。
当发生缓存命中时,基于缓存控制器40的控制,每个存储体BK将保存在与存储器访问请求中包括的索引地址IDX相对应的条目中的子数据SDT输出到开关20。另一方面,当发生缓存未命中时,基于缓存控制器40的控制,每个存储体BK将在从主存储器50读取的一个缓存行的数据DT中的与存储器访问请求中包括的索引地址IDX相对应的子数据SDT保存在与索引地址IDX相对应的条目中。
缓存控制器40从主标签单元MTAG和子标签单元STAG接收命中信号HIT,并且如上所述控制缓存60。缓存控制器40执行存储体BK与主存储器50之间的数据传送。另外,在更新保存在每个存储体BK中的子数据的情况下,当发生缓存未命中时,缓存控制器40将子数据写回到主存储器50。
图1所示的缓存60是直接映射缓存,但是具有多条路的集合关联缓存(setassociative cache)可以用于缓存60。在这种情况下,标签阵列TGA和标签阵列缓存TGAC也被划分为与路的数量相对应的数量。在下面描述的每个实施方式中示出的缓存60也是直接映射缓存,但是集合关联缓存可以用于下面描述的每个实施方式中的缓存60。
图2和图3示出了保存在图1所示的缓存60中的数据的示例。在图2和图3中,处理器100包括四个存储体BK#0至BK#3。存储体BK#0到BK#3中的每一个保存针对由索引地址IDX标识的每个条目的64位子数据SDT。
在图2所示的四个存储体BK#0至BK#3中,包括在由索引地址IDX标识的一个条目中的四个子数据SDT对应于一个缓存行CL。在图2所示的示例中,缓存行CL的数据大小是256位。在这种情况下,图1所示的缓存控制器40执行将数据从主存储器50传送到缓存60的缓存填充。在缓存填充期间,包括在缓存行CL中的子数据SDT按照根据地址AD的顺序存储在由共同索引地址IDX标识的存储体BK#0至BK#3的条目中。另外,缓存控制器40执行将数据从缓存60传送到主存储器50的写回。在写回期间,保存在由共同索引地址IDX标识的存储体BK#0至BK#3的条目中的四个子数据SDT按照根据地址的顺序存储在主存储器50中。
在图3所示的四个存储体BK#0至BK#3中,包括在由两个连续索引地址IDX标识的两个条目中的八个子数据SDT对应于一个缓存行CL。在图3所示的示例中,缓存行CL的数据大小是512位。在这种情况下,缓存控制器40执行缓存填充。在缓存填充期间,包括在两个缓存行CL中的子数据SDT按照根据地址AD的顺序存储在由两个连续索引地址IDX标识的存储体BK#0至BK#3的两个条目中。另外,在写回期间,缓存控制器40将保存在由两个连续索引地址IDX标识的存储体BK#0至BK#3的两个条目中的八个子数据SDT按照根据地址的顺序存储在主存储器50中。
例如,在缓存60包括具有64位的位宽度的四个存储体BK并且缓存行CL的大小是1024位的情况下,缓存控制器40执行针对四个存储体BK中的每个存储体的四个条目的缓存填充和写回。在缓存60包括具有64位的位宽度的八个存储体BK并且缓存行CL的大小是1024位的情况下,缓存控制器40执行针对八个存储体BK中的每个存储体的两个条目的缓存填充和写回。
图4示出图1所示的处理器100的存储器访问操作的示例。即,图4示出了处理器100的运算处理方法的示例。基于与来自多个加载存储单元LDST中的至少一个加载存储单元LDST的加载指令相对应的存储器访问请求的发出,缓存控制器40执行图4所示的操作。
当发生来自多个加载存储单元LDST的针对相互不同的存储体BK的存储器访问请求的缓存命中时,在作为访问目标的存储体BK的每一个中执行图4所示的操作。当发生来自多个加载存储单元LDST的针对相互不同的存储体BK的存储器访问请求之一的缓存未命中时,与缓存未命中相关联的写回和写回之后的缓存填充在所有存储体BK中共有地执行。
首先,在步骤S10中,缓存控制器40使用存储体地址BA确定存储器访问请求是否指示与主标签单元MTAG相对应的存储体BK(在本示例中是BK#0)。当存储器访问请求指示与主标签单元MTAG相对应的存储体BK时,缓存控制器40的操作前进到步骤S20。在步骤S20中包括的步骤S22、S24、S26和S28中,缓存控制器40使用主标签单元MTAG执行访问处理。
当存储器访问请求没有指示与主标签单元MTAG相对应的存储体BK时,缓存控制器40的操作前进到步骤S30。在步骤S30中包括的步骤S32、S34、S36和S38中,缓存控制器40使用子标签单元STAG执行访问处理。
在步骤S22中,缓存控制器40基于存储器访问请求中包括的索引地址IDX来对主标签单元MTAG进行访问,并且读取标签地址TAG。另外,缓存控制器40使比较器CMP1对存储器访问请求中包括的标签地址TAG与从主标签单元MTAG读取的标签地址TAG进行比较,并且输出命中信号HIT。
接着,在步骤S24中,缓存控制器40基于从比较器CMP1输出的命中信号HIT来确定在主标签单元MTAG中是否发生缓存命中。当在主标签单元MTAG中发生命中时,缓存控制器40的操作前进到步骤S26,而当在主标签单元MTAG中发生缓存未命中时,缓存控制器40的操作前进到步骤S28。
在步骤S26中,缓存控制器40执行正常的缓存命中处理,并且经由开关20将从其中发生缓存命中的存储体BK读取的数据输出到作为存储器访问请求的发起者的加载存储单元LDST。然后,缓存控制器40结束图4所示的操作。
在步骤S28中,缓存控制器40执行正常的缓存未命中处理。即,缓存控制器40执行例如图2或图3所示的缓存填充操作,并且更新保存在每个存储体BK中的数据。此外,缓存控制器40根据每个存储体BK中数据的更新来更新主标签单元MTAG、标签转换单元TCNV和标签阵列缓存TGAC。当存储体BK中的数据被更新时,缓存控制器40执行写回操作。然后,缓存控制器40结束图4所示的操作。
另一方面,在步骤S32中,缓存控制器40对与由存储器访问请求中包括的存储体地址BA指示的存储体BK相对应的子标签单元STAG进行访问。缓存控制器40基于存储器访问请求中包括的标签地址TAG1对标签转换单元TCNV进行访问,并且读取标识信息ID。缓存控制器40基于存储器访问请求中包括的索引地址IDX来对标签阵列缓存TGAC进行访问,并且读取标识信息ID和标签地址TAG2。
然后,缓存控制器40使比较器CMP2对存储器访问请求中包括的标签地址TAG2与从标签阵列缓存TGAC中读取的标签地址TAG2进行比较。另外,缓存控制器40使比较器CMP2对从标签转换单元TCNV读取的标识信息ID与从标签阵列缓存TGAC读取的标识信息ID进行比较。缓存控制器40基于比较器CMP2的比较结果输出命中信号HIT。
接下来,在步骤S34中,缓存控制器40基于从比较器CMP2输出的命中信号HIT来确定在子标签单元STAG中是否发生缓存命中。当在子标签单元STAG中发生命中时,缓存控制器40的操作前进到步骤S36。当在子标签单元STAG中发生缓存未命中时,缓存控制器40的操作前进到步骤S38。
在步骤S36中,缓存控制器40以类似于步骤S26的方式执行正常缓存命中处理,并且结束图4所示的操作。在步骤S38中,缓存控制器40执行类似于步骤S28的正常缓存未命中处理,并且结束图4所示的操作。
如上所述,在该实施方式中,处理器100可以通过保存标识第一标签地址TAG1的标识信息ID和第二标签地址TAG2的标签阵列缓存TGAC来确定在存储体BK中是否发生缓存命中。标签阵列缓存TGAC的条目的位宽度小于标签阵列TGA的条目的位宽度。如上所述,包括标签转换单元TCNV和标签阵列缓存TGAC的子标签单元STAG的电路规模小于包括标签阵列TGA的主标签单元MTAG的电路规模。
出于该原因,处理器100可以使用电路规模小于主标签单元MTAG的电路规模的子标签单元STAG来确定在存储体BK#1至BK#n中是否发生缓存命中。换句话说,与针对每个存储体BK提供主标签单元MTAG的情况相比,处理器100可以减小确定是否发生缓存命中的确定电路的规模。作为结果,与其中针对每个存储体BK提供主标签单元MTAG的处理器相比,可以降低处理器100的制造成本等。
在该实施方式中,与每个存储体BK相对应的主标签单元MTAG或子标签单元STAG被提供在开关20的更靠近存储体BK的一侧。开关20基于从加载存储单元LDST输出的访问地址来确定作为访问目标的存储体BK,并且将访问地址输出到与所确定的存储体BK相对应的主标签单元MTAG或子标签单元STAG。出于该原因,从主标签单元MTAG或子标签单元STAG输出的命中信号HIT包括存储体BK的信息。因此,缓存控制器40可以根据来自主标签单元MTAG和子标签单元STAG的命中信号HIT来控制存储体BK,而无需使用存储体地址BA。
图5示出了根据第二实施方式的处理器的示例。在该实施方式中,与上述第一实施方式的构成元件相同的构成元件用相同的附图标记表示,将省略其详细描述。图5所示的处理器100A是例如具有使用SIMD运算指令并行执行多个乘积和运算的功能的CPU等。
除了处理器100A包括多路复用器MUX1并且提供缓存控制器40A来代替图1所示的缓存控制器40之外,处理器100A具有与图1所示的处理器100的配置类似的配置。为了简化描述,假设处理器100A包括四个加载存储单元LDST(LDST#0至LDST#3)、三个子标签单元STAG(STAG#1至STAG#3)和四个存储体BK(BK#0至BK#3)。在该实施方式中,还描述了其中从加载存储单元LDST发出加载指令的示例。
与存储体BK#0相对应地提供主标签单元MTAG。分别与存储体BK#1至BK#3相对应地提供子标签单元STAG#1至STAG#3。多路复用器MUX1接收从开关20输出的针对主标签单元MTAG的地址AD和针对子标签单元STAG的地址AD,并且将接收到的地址AD之一输出到主标签单元MTAG。
除了标签转换单元TCNV输出命中信号HIT1,提供了多路复用器MUX2之外,子标签单元STAG的配置类似于图1所示的子标签单元STAG的配置。每个子标签单元STAG的多路复用器MUX2输出从比较器CMP2输出的命中信号HIT2和从主标签单元MTAG的比较器CMP1输出的命中信号HIT中的一个。多路复用器MUX1和MUX2的操作由缓存控制器40A控制。
当从标签转换单元TCNV之一接收到具有无效电平的命中信号HIT1时,缓存控制器40A确定是否发生临时缓存未命中。临时缓存未命中是由子标签单元STAG的标签转换单元TCNV确定的缓存未命中,并且存在缓存命中的可能性。
此外,缓存控制器40A控制多路复用器MUX1,并且使多路复用器MUX1将提供给其中发生临时缓存未命中的子标签单元STAG的地址AD输出到主标签单元MTAG。因此,缓存控制器40A可以使用主标签单元MTAG的标签阵列TGA来确定在与其中发生临时缓存未命中的子标签单元STAG相对应的存储体BK中是否发生缓存命中或缓存未命中。
缓存控制器40A使其中发生临时缓存未命中的子标签单元STAG的多路复用器MUX2选择从标签转换单元TCNV的标签阵列TGA输出的命中信号HIT,并且输出该命中信号HIT作为命中信号HIT2。因此,缓存控制器40A可以使用标签阵列TGA的确定结果来确定在与其中发生了临时缓存未命中的子标签单元STAG相对应的存储体BK中是否发生了真正的缓存命中或真正的缓存未命中。此外,缓存控制器40A可以根据确定结果来控制缓存60的操作。当标签转换单元TCNV输出具有无效电平的命中信号HIT1时,从比较器CMP2输出的命中信号HIT总是指示无效电平。
图6示出了图5所示的子标签单元STAG的示例。从图5所示的开关20输出的地址AD包括包含第一标签地址TAG1和第二标签地址TAG2的标签地址TAG、索引地址IDX和偏移地址OFS。偏移地址OFS包括标识存储体BK的存储体地址BA(例如,2位)。第一标签地址TAG1和第二标签地址TAG2附加有用于描述操作的符号“a”至“f”之一。
例如,标签转换单元TCNV包括由标识信息ID标识的四个条目ENT1、分别对应于条目ENT1的比较器CMP3、或电路OR和编码器ENC。第一标签地址TAG1由确定缓存未命中的发生的缓存控制器40A存储在每个条目ENT1中。
每个比较器CMP3将存储在对应条目ENT1中的第一标签地址TAG1与存储器访问请求中包括的第一标签地址TAG1进行比较,并且将比较结果输出到或电路OR和编码器ENC。例如,当两个被比较的第一标签地址TAG1匹配时,每个比较器CMP3输出逻辑(即,逻辑值或逻辑电平)“1”。
当比较器CMP3的输出之一具有逻辑“1”时,或电路OR将命中信号HIT1设置为有效电平,并且当比较器CMP3的所有输出都具有逻辑“0”时,或电路OR将命中信号HIT1设置为无效电平。
编码器ENC输出与输出逻辑“1”的比较器CMP3相对应的条目ENT1的标识信息ID。换句话说,编码器ENC输出保存存储器访问请求中包括的第一标签地址TAG1的条目ENT1的标识信息ID。如上所述,标签转换单元TCNV用作CAM。从编码器ENC输出的标识信息ID和存储器访问请求中包括的第二标签地址TAG2作为通过对第一标签地址TAG1进行编码而获得的简化标签输出到比较器CMP2。
标签阵列缓存TGAC包括:多个条目ENT2,其针对索引地址IDX的每个值保存第二标签地址TAG2和标识信息ID;分别对应于条目ENT2的比较器CMP4;以及分别对应于条目ENT2的标志FLG。每个标志FLG在初始状态下被复位为逻辑“0”,其指示对应的条目ENT2是无效的。每个标志FLG由缓存控制器40A置位或复位。每个标志FLG的置位状态(逻辑“1”)指示对应的条目ENT2保存有效的第二标签地址TAG2和有效的标识信息ID。每个标志FLG的复位状态(逻辑“0”)指示对应的条目ENT2保存无效的第二标签地址TAG2或无效的标识信息ID。
当保存在条目ENT2中的标识信息ID与从缓存控制器40A连同置位信号SET一起输出的标识信息ID匹配时,每个比较器CMP4将对应的标志FLG设置为逻辑“1”。当保存在条目ENT2中的标识信息ID与从缓存控制器40A连同复位信号RESET一起输出的标识信息ID匹配时,每个比较器CMP4将对应的标志FLG复位为逻辑“0”。
通过针对标签阵列缓存TGAC的每个条目ENT2设置标志FLG,缓存控制器40A可以通过简单地复位标志FLG来使条目ENT2无效,而不必重写第二标签地址TAG2或标识信息ID。因此,可以使用简单的控制来减少错误的命中信号HIT2被输出到缓存控制器40A。
基于缓存未命中,缓存控制器40A使用从图5所示的主存储器50读取的子数据SDT(缓存行)来更新存储体BK#0至BK#3中的每一个。缓存控制器40A与存储体BK#0至BK#3中的每一个的更新相对应地更新图5所示的主标签单元MTAG的标签阵列TGA,并且更新标签转换单元TCNV和标签阵列缓存TGAC。因为当发生缓存未命中时标签阵列TGA的操作与正常的缓存未命中处理相同,所以下面将描述子标签单元STAG的更新处理。
在更新处理期间,缓存控制器40A将存储器访问请求中包括的第一标签地址TAG1存储在条目ENT1之一中。缓存控制器40A将存储第一标签地址TAG1的条目ENT1的标识信息ID和复位信号RESET信号输出到比较器CMP4。缓存控制器40A对与保存输出到比较器CMP4的标识信息ID的条目ENT2相对应的标志FLG进行复位。
缓存控制器40A将存储器访问请求中包括的第二标签地址TAG2存储在与存储器访问请求中包括的索引地址IDX相对应的条目ENT2中。另外,缓存控制器40A将存储第一标签地址TAG1的条目ENT1的标识信息ID存储在存储第二标签地址TAG2的条目ENT2中。此外,缓存控制器40A将存储第一标签地址TAG1的条目ENT1的标识信息ID和置位信号SET输出到比较器CMP4。缓存控制器40A置位与保存输出到比较器CMP4的标识信息ID的条目ENT2相对应的标志FLG。
如图6所示,假设第一标签地址TAG1a、TAG1b、TAG1c和TAG1d保存在子标签单元STAG之一的标签转换单元TCNV的四个条目ENT1中。还假设第二标签地址TAG2d、TAG2f、TAG2b、TAG2e、……、TAG2a保存在标签阵列缓存TGAC的条目ENT2中。
在这种状态下,子标签单元STAG接收例如包括第一标签地址TAG1b和第二标签地址TAG2b的存储器访问请求。假设第二标签地址TAG2b和标识信息ID=“01”被保存在与存储器访问请求中包括的索引地址IDX相对应的条目ENT2中,并且对应的标志FLG具有逻辑“1”。
因为保存存储器访问请求中包括的第一标签地址TAG1b的条目ENT1的标识信息ID是“01”,所以标签转换单元TCNV将命中信号HIT1设置为有效电平,并且从编码器ENC输出标识信息ID=“01”。比较器CMP2从标签转换单元TCNV接收的简化标签包括标识信息ID=“01”和第二标签地址TAG2b。
标签阵列缓存TGAC输出保存在与存储器访问请求中包括的索引地址IDX相对应的条目ENT2中的第二标签地址TAG2b和标识信息ID=“01”作为简化标签。另外,标签阵列缓存TGAC输出保存在与存储器访问请求中包括的索引地址IDX相对应的标志FLG中的逻辑“1”。
比较器CMP2将逻辑“1”输出到与电路AND,因为两个被比较的简化标签匹配。与电路AND接收来自比较器CMP2的逻辑“1”和来自标志FLG的逻辑“1”,并且将命中信号HIT设置为有效电平。当发出存储器访问请求时,缓存控制器40A使多路复用器MUX2选择与电路AND的输出。出于该原因,多路复用器MUX2将具有有效电平的命中信号HIT作为命中信号HIT2输出到缓存控制器40A。缓存控制器40A基于具有有效电平的命中信号HIT2来检测与子标签单元STAG相对应的存储体BK中的缓存命中,并且将保存在存储体BK中的子数据SDT输出到加载存储单元LDST。
另一方面,尽管存储器访问请求中包括的第一标签地址TAG1被保存在条目ENT1中,但是存在与标签转换单元TCNV相对应的简化标签与从条目ENT2输出的简化标签不匹配的情况。可替选地,两个被比较的简化标签可以匹配,但是存在标志FLG被复位为逻辑“0”的情况。在这些情况下,缓存控制器40A接收具有无效电平的命中信号HIT2,并且执行缓存未命中处理。此外,缓存控制器40A执行每个存储体BK的更新处理,以及标签阵列缓存TGAC和标签转换单元TCNV的更新处理。
此外,当存储器访问请求中包括的第一标签地址TAG1没有被保存在条目ENT1中时,标签转换单元TCNV如上所述将命中信号HIT1设置为无效电平(逻辑“0”)。当缓存控制器40A接收到具有无效电平的命中信号HIT1时,缓存控制器40A检测到临时缓存未命中,并且使图5所示的多路复用器MUX1选择被提供给子标签单元STAG的地址AD。另外,缓存控制器40A使多路复用器MUX2选择来自主标签单元MTAG的命中信号HIT。
主标签单元MTAG经由多路复用器MUX1接收生成临时缓存未命中的地址AD,使用标签阵列TGA确定是否发生缓存命中或缓存未命中,并且输出命中信号HIT。缓存控制器40A经由多路复用器MUX2接收从主标签单元MTAG输出的命中信号HIT作为命中信号HIT2,并且根据命中信号HIT2执行缓存命中处理或缓存未命中处理。
在缓存命中处理期间,缓存控制器40A将保存在存储体BK中的子数据SDT输出到加载存储单元LDST。在缓存未命中处理期间,如上所述,缓存控制器40A执行每个存储体BK的数据的更新处理,以及标签阵列TGA、标签转换单元TCNV和标签阵列缓存TGAC的更新处理。
图7示出了图5中示出的处理器100A的存储器访问操作的示例。即,图7示出了处理器100A的运算处理方法的示例。将省略与以上结合图4和图6描述的操作相同的操作的详细描述。基于与来自多个加载存储单元LDST中的至少一个加载存储单元LDST的加载指令相对应的存储器访问请求的发出,由缓存控制器40A执行图7所示的操作。
首先,在步骤S40中,缓存控制器40使用存储体地址BA来确定存储器访问请求是否指示与主标签单元MTAG相对应的存储体BK(在本示例中为BK#0)。当存储器访问请求指示与主标签单元MTAG相对应的存储体BK时,缓存控制器40A的操作前进到步骤S42。另一方面,当存储器访问请求没有指示与主标签单元MTAG相对应的存储体BK时,缓存控制器40A的操作前进到步骤S44。
步骤S42的处理类似于图4所示的使用主标签单元MTAG的步骤S20的访问处理。在执行步骤S42的处理之后,缓存控制器40A结束图7所示的操作。
在步骤S44中,与图4所示的步骤S32类似,缓存控制器40A对与由存储器访问请求中包括的存储体地址BA指示的存储体BK相对应的子标签单元STAG进行访问。另外,缓存控制器40A使子标签单元STAG确定在标签转换单元TCNV中是否发生缓存命中或缓存未命中,以及在标签阵列缓存TGAC中是否发生缓存命中或缓存未命中。
接下来,在步骤S46中,缓存控制器40A基于从标签转换单元TCNV输出的命中信号HIT1来确定在标签转换单元TCNV中是否发生缓存命中。当在标签转换单元TCNV中发生缓存命中时,缓存控制器40A的操作前进到步骤S50,而当在标签转换单元TCNV中发生缓存未命中时,缓存控制器40A的操作前进到步骤S48。步骤S48的处理类似于图4所示的使用主标签单元MTAG的步骤S20的访问处理。在执行步骤S48的处理之后,缓存控制器40A的操作前进到步骤S56。
在步骤S50中,缓存控制器40A确定在标签阵列缓存TGAC中是否发生缓存命中。当在标签阵列缓存TGAC中发生缓存命中时,在标签转换单元TCNV和标签阵列缓存TGAC中都发生缓存命中,并且因此,缓存控制器40A的操作前进到步骤S52以执行正常的缓存命中处理。步骤S52的处理类似于图4所示的步骤S36的处理。
另一方面,当在标签阵列缓存TGAC中发生缓存未命中时,缓存控制器40A的操作前进到步骤S54。除了不包括标签转换单元TCNV和标签阵列缓存TGAC的更新处理之外,步骤S54的处理类似于图4所示的步骤S38的处理。缓存控制器40A在执行步骤S54的处理之后执行步骤S56的处理。在步骤S56中,缓存控制器40A执行标签转换单元TCNV和标签阵列缓存TGAC的更新处理,并且缓存控制器40A结束图7所示的操作。
如上所述,在该实施方式中,可以获得与上述第一实施方式中可获得的效果类似的效果。例如,与针对每个存储体BK提供主标签单元MTAG的情况相比,处理器100A可以减小确定是否发生缓存命中的确定电路的规模。作为结果,与其中针对每个存储体BK提供主标签单元MTAG的处理器相比,可以降低处理器100A的制造成本等。
此外,在该实施方式中,当标签转换单元TCNV确定发生临时缓存未命中时,缓存控制器40A经由多路复用器MUX1将访问地址提供给主标签单元MTAG。因此,缓存控制器40A可以使用主标签单元MTAG的标签阵列TGA来确定在与临时缓存未命中相对应的存储体BK中是否发生缓存命中或缓存未命中。
通过针对标签阵列缓存TGAC的每个条目ENT2设置标志FLG,缓存控制器40A可以通过简单地复位标志FLG来使条目ENT2无效,而不必重写第二标签地址TAG2或标识信息ID。因此,可以使用简单的控制来减少错误的命中信号HIT2被输出到缓存控制器40A。
图8示出了根据第三实施方式的处理器的子标签单元的示例。在该实施方式中,与图6所示的构成元件相同的构成元件用相同的附图标记表示,将省略其详细描述。图8所示的处理器100B是例如具有使用SIMD运算指令并行地执行多个乘积和运算的功能的CPU等。处理器100B包括子标签单元STAG2和缓存控制器40B来代替图5所示的子标签单元STAG和缓存控制器40A。在处理器100B中,除了子标签单元STAG2和缓存控制器40B之外的配置与图5和图6所示的配置相同。
子标签单元STAG2包括标签转换部分TCNV2、标签阵列缓存TGAC2、比较器CMP2、与电路AND和多路复用器MUX2。标签转换单元TCNV2包括一个条目ENT1和与条目ENT1相对应的比较器CMP3,并且不包括图6所示的编码器ENC和或电路OR。当保存在条目ENT1中的第一标签地址TAG1与存储器访问请求中包括的第一标签地址TAG1匹配时,比较器CMP3将命中信号HIT1设置为有效电平。当保存在条目ENT1中的第一标签地址TAG1与存储器访问请求中包括的第一标签地址TAG1不匹配时,比较器CMP3将命中信号HIT1设置为无效电平。命中信号HIT1被输出到缓存控制器40B。
除了不提供比较器CMP4并且条目ENT2不保存身份信息ID之外,标签阵列缓存TGAC2具有与图6所示的标签阵列缓存TGAC相同的配置。缓存控制器40B通过将索引地址IDX和置位信号SET输出到标签阵列缓存TGAC2而将对应的标志FLG设置为逻辑“1”。缓存控制器40B将索引地址IDX和复位信号RESET输出到标签阵列缓存TGAC2,以将对应的标志FLG复位到逻辑“0”。
当存储器访问请求中包括的第二标签地址TAG2与从与存储器访问请求中包括的索引地址IDX相对应的条目ENT2输出的第二标签地址TAG2匹配时,比较器CMP2输出逻辑“1”。另一方面,当存储器访问请求中包括的第二标签地址TAG2与从与存储器访问请求中包括的索引地址IDX相对应的条目ENT2输出的第二标签地址TAG2不匹配时,比较器CMP2输出逻辑“0”。当与电路AND从比较器CMP2和标志FLG中的每一个接收到逻辑“1”时,与电路AND将命中信号HIT设置为有效电平。多路复用器MUX2的操作与图6所示的多路复用器MUX2的操作相同。当发出存储器访问请求时,缓存控制器40B使多路复用器MUX2选择与电路AND的输出。
根据该实施方式的处理器100B的操作类似于图7所示的操作。然而,标签转换单元TCNV2的条目ENT1的数量小于图6中的条目ENT1的数量。标签阵列缓存TGAC2不包括比较器CMP4,并且条目ENT2不保存标识信息ID。出于该原因,可以使子标签单元STAG2的电路规模小于图6所示的子标签单元STAG的电路规模。
如上所述,在该实施方式中,可以获得与上述实施方式中可获得的效果类似的效果。此外,在该实施方式中,因为可以使子标签单元STAG2的电路规模小于子标签单元STAG的电路规模,所以可以使处理器100B的电路规模小于处理器100A的电路规模。作为结果,可以降低处理器100B的制造成本等。
图9示出了根据第四实施方式的处理器的示例。在本实施方式中,与上述实施方式的构成元件相同的构成元件用相同的附图标记表示,将省略其详细描述。图9所示的处理器100C是例如具有使用SIMD运算指令并行执行多个乘积和运算的功能的CPU等。处理器100C包括针对三个子标签单元STAG3#1至STAG3#3共有地提供的标签转换单元TCNV。其他方面,处理器100C的配置类似于图5所示的处理器100A的配置。标签转换单元TCNV的配置类似于图6所示的标签转换单元TCNV的配置。此外,尽管未在图9中示出,但是缓存60的配置将加载存储单元LDST和主存储器50从图9中示出的配置中排除。
图10示出了图9所示的加载存储单元LDST中的地址计算的示例。例如,每个加载存储单元LDST通过将标量寄存器中保存的值与SIMD寄存器中保存的值相加来计算存储器访问请求的地址AD。例如,64位基址BASE_AD保存在标量寄存器中,以及32位索引地址INDEX_AD(对应于较低位)保存在SIMD寄存器中。
在这种情况下,与由每个加载存储单元LDST生成的地址AD的高位相对应的标签地址TAG变得相同,除了当由于相加而发生进位时。因此,存储在图9所示的标签转换单元TCNV中的信息可以为四个加载存储单元LDST所共有。作为结果,可以针对多个子标签单元STAG3共有地提供标签转换单元TCNV。
如上所述,在该实施方式中,也可以获得与上述实施方式中可获得的效果类似的效果。此外,在该实施方式中,因为针对多个子标签单元STAG3共有地提供标签转换单元TCNV,所以可以使子标签单元STAG3的电路规模小于子标签单元STAG2的电路规模。作为结果,处理器100C的电路规模可以从处理器100A的电路规模进一步减小,可以降低处理器100C的制造成本等。
图11至图13示出了根据第五实施方式、第六实施方式和第七实施方式的主标签单元MTAG和子标签单元STAG的配置的示例。在图11所示的配置示例1中,与预定数量的存储体BK相对应地提供多个主标签单元MTAG中的每一个。例如,如图7所示,当在步骤S22中在标签转换单元TCNV的条目ENT1中发生缓存未命中时,使用主标签单元MTAG的标签阵列TGA来执行缓存命中或缓存未命中的确定。出于该原因,当在多个子标签单元STAG的标签转换单元TCNV的条目ENT1中发生缓存未命中时,在标签阵列TGA中发生竞争,从而延迟缓存命中或缓存未命中的确定。
另外,在针对存储体BK#0的主标签单元MTAG的确定期间,使主标签单元MTAG基于标签转换单元TCNV的条目ENT1的临时缓存未命中对缓存命中或缓存未命中的确定等待。在配置示例1中,通过提供多个主标签单元MTAG,可以减少由标签转换部分TCNV的条目ENT1的临时缓存未命中引起的主标签单元MTAG的竞争。此外,可以减少在存储体BK#0的缓存命中或缓存未命中的确定与由于标签转换单元TCNV的条目ENT1的缓存未命中而导致的缓存命中或缓存未命中的确定之间的冲突的可能性。
在图11所示的第二配置示例中,与存储体BK中的每一个相对应地提供子标签单元STAG,并且独立于多个存储体BK提供主标签单元MTAG。因此,可以成对地重复布置子标签单元STAG和存储体BK,并且可以通过考虑电路布置或布局的对称性来进行设计。作为结果,可以有助于处理器的布局设计,或者可以改善处理器的电特性例如频率特性等。
在图12和图13所示的配置示例3至6中,主标签单元MTAG和子标签单元STAG被布置在开关的更靠近加载存储单元LDST的一侧。即,在存储器访问请求被提供给开关之前,主标签单元MTAG和子标签单元STAG从多个加载存储单元LDST接收存储器访问请求。在图12和图13中,提供给除了存储体BK#0之外的存储体BK#1至BK#n的命中信号HIT指示命中信号HIT1和HIT2。
例如,当加载存储单元LDST的数量m+1小于存储体BK的数量n+1时,与配置示例1和2相比,配置示例3至6可以减少主标签单元MTAG和子标签单元STAG的总数。出于该原因,与配置示例1和2相比,配置示例3至6可以进一步减小处理器的电路规模。
在图12所示的配置示例3中,与加载存储单元LDST中的每一个相对应地提供主标签单元MTAG。在图12所示的配置示例4中,与加载存储单元LDST#0相对应地提供主标签单元MTAG,并且与加载存储单元LDST#1至LDST#m中的每一个相对应地提供子标签单元STAG。
在图13所示的配置示例5中,提供了多个主标签单元MTAG。因此,类似于图12所示的配置示例,可以降低主标签单元MTAG中的多个存储器访问请求的冲突的可能性。在图13所示的配置示例6中,与加载存储单元LDST中的每一个相对应地提供子标签单元STAG,并且独立于多个加载存储单元LDST提供主标签单元MTAG。因此,可以成对地重复布置子标签单元STAG和加载存储单元LDST,并且可以通过考虑电路布置或布局的对称性来进行设计。作为结果,可以有助于处理器的布局设计,或者可以改善处理器的电特性例如频率特性等。
图1或图5中所示的子标签单元STAG、图8中所示的子标签单元STAG2或图9中所示的子标签单元STAG3可以用于配置示例1、2和4至6中的每个配置示例中的子标签单元STAG。当使用图9所示的子标签单元STAG3时,独立于子标签单元STAG3提供标签转换部分TCNV。
图14示出了根据图12所示的配置示例4的处理器的示例。在该实施方式中,与上述实施方式的构成元件相同的构成元件用相同的附图标记表示,将省略其详细描述。在图14所示的处理器100D中,主标签单元MTAG、子标签单元STAG和多路复用器MUX1被布置在加载存储单元LDST与开关20D之间。为了简化描述,假设处理器100D包括三个加载存储单元LDST#1至LDST#3、三个子标签单元STAG#1至STAG#3以及四个存储体BK#0至BK#3。尽管未在图14中示出,但是缓存60具有将加载存储单元LDST和主存储器50从图14中示出的元件中排除的配置。
如图12所示的配置示例4所示,与加载存储单元LDST#0相对应地提供主标签单元MTAG。分别与加载存储单元LDST#1至LDST#3相对应地提供子标签单元STAG#1至STAG#3。处理器100D的存储器访问操作类似于图7中所示的存储器访问操作。
除了接收来自加载存储单元LDST的地址AD和来自仲裁单元10的存储体地址BA之外,开关20D还接收来自主标签单元MTAG的索引地址IDX和命中信号HIT,以及来自子标签单元STAG的索引地址IDX和命中信号HIT1和HIT2。开关20D根据存储体地址BA将接收到的索引地址IDX和命中信号HIT或命中信号HIT1和HIT2输出到缓存60的对应存储体BK。另外,开关20D将由缓存控制器40生成的针对主标签单元MTAG和子标签单元STAG的控制信号输出到主标签单元MTAG和子标签单元STAG。
图15示出了根据第八实施方式的处理器中的主标签单元MTAG和子标签单元STAG的示例。可以在多个存储体BK中共享主标签单元MTAG和子标签单元STAG。根据该实施方式的处理器100E包括:主标签单元MTAG4,其由一对相互相邻的存储体BK共享;以及子标签单元STAG4,其由除了由主标签单元MTAG4共享的一对相互相邻的存储体BK之外的另一对相互相邻的存储体BK共享。在处理器100E中,不包括主标签单元MTAG4和子标签单元STAG4的配置类似于图5所示的处理器100A的配置。图15示出了如下示例:其中,主标签单元MTAG由一对相互相邻的存储体BK共享,以及子标签单元STAG由另一对相互相邻的存储体BK共享,但是可以在任意存储体BK之中共享主标签单元MTAG和子标签单元STAG中的每一个。
例如,主标签单元MTAG4输出针对存储体BK#0和BK#1的命中信号HIT。子标签单元STAG4输出针对存储体BK#2和BK#3的命中信号HIT1和HIT(HIT2)。在处理器100E包括八个存储体BK#0至BK#7的情况下,可以提供与存储体BK#4和BK#5相对应的子标签单元STAG4,以及与存储体BK#6和BK#7相对应的子标签单元STAG4。
例如,主标签单元MTAG4是多端口类型,并且可以同时接收从两个加载存储单元LDST输出的标签地址TAG和索引地址IDX。另外,主标签单元MTAG4可以彼此独立地输出与两个加载存储单元LDST相对应的命中信号HIT。
子标签单元STAG4是多端口类型,并且可以同时接收从加载存储单元LDST输出的标签地址TAG(TAG1、TAG2)和索引地址IDX。此外,子标签单元STAG4可以彼此独立地输出与两个加载存储单元LDST相对应的命中信号HIT1和HIT(HIT2)。
在该实施方式中,提供了多端口类型主标签单元MTAG 4和多端口类型子标签单元STAG 4。出于该原因,与图5所示的主标签单元MTAG和子标签单元STAG的总数相比,可以减少主标签单元MTAG4和子标签单元STAG4的总数。因此,可以减小主标签单元MTAG4和子标签单元STAG4的电路规模,从而使得能够减小处理器100E的电路规模。
处理器100E可以包括图15所示的主标签单元MTAG 4和图5所示的子标签单元STAG。另外,处理器100E可以包括图5所示的主标签单元MTAG和图15所示的子标签单元STAG4。此外,可以布置主标签单元MTAG4来代替上述实施方式的每一个中的其他主标签单元MTAG。可以布置子标签单元STAG4来代替在上述实施方式的每一个中的其他子标签单元STAG、STAG2和STAG3。
可以提供图15中示出的主标签单元MTAG4来代替图11中示出的配置示例1、图12中示出的配置示例3和4以及图13中示出的配置示例5中的任何一个配置示例中的主标签单元MTAG。可以提供图15所示的子标签单元STAG4来代替图11至图13所示的配置示例1至6中的任何一个配置示例中的子标签单元STAG。
如上所述,在该实施方式中,可以获得与上述实施方式中可获得的效果类似的效果。在该实施方式中,可以通过提供多端口类型主标签单元MTAG4和多端口类型子标签单元STAG4中的至少一者来减小处理器100E的电路规模。
图16示出了针对缓存的每个配置的标签阵列/数据阵列比率的示例。图16示出了其中仅使用标签阵列TGA而不使用图1等所示的标签阵列缓存TGAC的示例。将在下面将给出的图17的描述中使用指示缓存行大小的附图标记(A)。
当与存储体BK中的每一个相对应地提供标签阵列TGA时,针对每个存储体BK的、标签阵列TGA相对于数据阵列DTA的比率随着存储体BK的数量增加而变得更高,并且随着缓存行大小变小而变得更高。标签阵列TGA相对于数据阵列DTA的比率随着路的数量的增加而变得更高,并且随着物理地址的位数F的增加而变得更高。标签阵列TGA的位数(a)可以由下式(1)表示。
(a)=F+log2(路的数量)-log2(缓存大小)---(1)
此外,标签阵列TGA相对于数据阵列DTA的比率随着缓存大小的减小而变得更高。
图17示出了在提供标签阵列缓存的情况下改进标签阵列/数据阵列比率的效果的示例。在图16所示的缓存的配置(A)中,标签阵列/数据阵列比率为56.3%。相比之下,在使用标签阵列缓存TGAC的图1所示的缓存的配置中,标签阵列/数据阵列比率可以减小到16.9%,其大约是图16所示的配置(A)的标签阵列/数据阵列比率的1/3。此外,在使用标签阵列缓存TGAC的根据图12中所说明的配置示例4的缓存的配置中,标签阵列/数据阵列比率可以减小到9.1%,其大约是图16中所示出的配置(A)的标签阵列/数据阵列比率的1/6。
根据上述实施方式,可以减小确定包括多个存储体的缓存的缓存命中的确定单元的大小相对于缓存的大小的比率。
尽管例如用“第一”、“第二”、“第三”……和“第八”对实施方式进行了编号,但序数并不暗示实施方式的优先级。许多其他变化和修改对于本领域技术人员而言是明显的。
本文中记载的所有示例和条件性语言旨在用于教导的目的以帮助读者理解本发明以及发明人为促进本领域而贡献的构思,并且应当被解释为不限于这样的具体记载的示例和条件,在说明书中对这样的示例的组织也不与对本发明的优势和劣势的示出相关。尽管已详细地描述了本发明的实施方式,但是应当理解,在不脱离本发明的精神和范围的情况下,可以对其进行各种改变、替换和更改。
Claims (16)
1.一种处理器,包括:
多个请求发出单元,每个请求发出单元用于发出对存储装置的存储器访问请求;
数据阵列,其包括多个存储体,每个存储体用于保存子数据,所述子数据是从基于所述存储器访问请求从所述存储装置读取的数据划分的;
开关,其用于将所述存储器访问请求传送到所述多个存储体之一;
至少一个第一确定单元,其包括第一保存单元,所述第一保存单元针对所述存储器访问请求中包括的访问地址中的索引地址的每个值保存所述访问地址中包括的标签地址,并且所述至少一个第一确定单元用于:当所述访问地址中包括的所述标签地址与同所述访问地址中包括的所述索引地址相对应地保存在所述第一保存单元中的所述标签地址相匹配时,确定缓存命中,其中所述缓存命中指示访问目标数据被保存在所述数据阵列中;
至少一个第二确定单元,其包括第二保存单元,所述第二保存单元针对所述索引地址的每个值保存对所述标签地址中包括的第一标签地址进行标识的标识信息和所述标签地址中包括的第二标签地址,并且所述至少一个第二确定单元用于:当与所述访问地址中包括的所述第一标签地址相对应的所述标识信息和所述访问地址中包括的所述第二标签地址分别与同所述访问地址中包括的所述索引地址相对应地保存在所述第二保存单元中的所述标识信息和所述第二标签地址相匹配时,确定缓存命中;以及
缓存控制器,其用于基于所述第一确定单元或所述第二确定单元的确定结果来对所述数据阵列或所述存储装置进行访问。
2.根据权利要求1所述的处理器,其中,
所述第二确定单元包括第三保存单元,所述第三保存单元包括保存所述第一标签地址的多个条目,
对所述第一标签地址进行标识的所述标识信息是对所述第三保存单元的条目进行标识的标识信息,以及
在对所述第三保存单元的保存所述访问地址中包括的所述第一标签地址的条目进行标识的所述标识信息和所述访问地址中包括的所述第二标签地址与所述访问地址中包括的所述索引地址相对应地存储在所述第二保存单元中的情况下,所述第二确定单元确定缓存命中。
3.根据权利要求2所述的处理器,其中,针对多个第二确定单元共有地提供所述第三保存单元。
4.根据权利要求2所述的处理器,其中,当所述访问地址中包括的所述第一标签地址没有被保存在所述第三保存单元中时,所述缓存控制器使所述第一确定单元基于所述访问地址来确定所述缓存命中。
5.根据权利要求1至4中任一项所述的处理器,其中,所述第二保存单元针对索引地址的每个值保存指示其中的所述标识信息有效的标志。
6.根据权利要求1至4中任一项所述的处理器,其中,所述第一确定单元和所述第二确定单元经由所述开关从所述多个请求发出单元中的每一个请求发出单元接收所述存储器访问请求。
7.根据权利要求6所述的处理器,其中,
与所述多个存储体中的每一个存储体相对应地提供所述第一确定单元,并且
与不对应于所述第一确定单元的存储体相对应地提供所述第二确定单元。
8.根据权利要求6所述的处理器,其中,
独立于所述多个存储体提供所述第一确定单元,并且
与所述多个存储体中的每一个存储体相对应地提供所述第二确定单元。
9.根据权利要求6所述的处理器,其中,
所述第二确定单元由所述多个存储体之中的两个或更多个存储体共享,以及
与所述多个存储体中的除了由所述第二确定单元共享的所述两个或更多个存储体之外的至少一个存储体相对应地提供所述第一确定单元。
10.根据权利要求6或9所述的处理器,其中,
所述第一确定单元由所述多个存储体之中的两个或更多个存储体共享,以及
与所述多个存储体中的除了由所述第一确定单元共享的所述两个或更多个存储体之外的至少一个存储体相对应地提供所述第二确定单元。
11.根据权利要求1至4中任一项所述的处理器,其中,在所述存储器访问请求被提供给所述开关之前,所述第一确定单元和所述第二确定单元从所述多个请求发出单元中的每一个请求发出单元接收所述存储器访问请求。
12.根据权利要求11所述的处理器,其中,
与所述多个请求发出单元中的两个或更多个请求发出单元相对应地提供所述第一确定单元,并且
与不对应于第一确定单元的请求发出单元相对应地提供所述第二确定单元。
13.根据权利要求11所述的处理器,其中,
独立于所述多个请求发出单元提供所述第一确定单元,并且
与所述多个请求发出单元中的每一个请求发出单元相对应地提供所述第二确定单元。
14.根据权利要求11所述的处理器,其中,
所述第二确定单元由所述多个请求发出单元之中的一对相互相邻的请求发出单元共享,并且
与所述多个请求发出单元中的除了共享所述第二确定单元的所述一对相互相邻的请求发出单元之外的至少一个请求发出单元相对应地提供所述第一确定单元。
15.根据权利要求11所述的处理器,其中,
所述第一确定单元由所述多个请求发出单元之中的一对相互相邻的请求发出单元共享,并且
与所述多个请求发出单元中的除了共享所述第一确定单元的所述一对相互相邻的请求发出单元之外的至少一个请求发出单元相对应地提供所述第二确定单元。
16.一种运算处理方法,其在处理器中实施,所述处理器包括:多个请求发出单元,每个请求发出单元用于发出对存储装置的存储器访问请求;数据阵列,其包括多个存储体,每个存储体用于保存子数据,所述子数据是从基于所述存储器访问请求从所述存储装置读取的数据划分的;以及开关,其用于将所述存储器访问请求传送到所述多个存储体之一,所述运算处理方法包括:
由所述处理器的至少一个第一确定单元在所述存储器访问请求中包括的访问地址中包括的标签地址与同所述访问地址中包括的索引地址相对应地保存在第一保存单元中的标签地址相匹配时,确定缓存命中,其中所述缓存命中指示访问目标数据被保存在所述数据阵列中,其中所述至少一个第一确定单元包括所述第一保存单元,所述第一保存单元针对所述访问地址中的所述索引地址的每个值保存所述访问地址中包括的所述标签地址;
由所述处理器的至少一个第二确定单元在与所述访问地址中包括的第一标签地址相对应的标识信息和所述访问地址中包括的第二标签地址分别与同所述访问地址中包括的所述索引地址相对应地保存在第二保存单元中的标识信息和第二标签地址相匹配时,确定缓存命中,其中所述至少一个第二确定单元包括所述第二保存单元,所述第二保存单元针对所述索引地址的每个值保存对所述标签地址中包括的所述第一标签地址进行标识的所述标识信息和所述标签地址中包括的所述第二标签地址;以及
由所述处理器的缓存控制器基于所述第一确定单元或所述第二确定单元的确定结果对所述数据阵列或所述存储装置进行访问。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2021165561A JP2023056289A (ja) | 2021-10-07 | 2021-10-07 | 演算処理装置および演算処理方法 |
JP2021-165561 | 2021-10-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115952112A true CN115952112A (zh) | 2023-04-11 |
Family
ID=85798687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211084268.9A Pending CN115952112A (zh) | 2021-10-07 | 2022-09-06 | 处理器和运算处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11829293B2 (zh) |
JP (1) | JP2023056289A (zh) |
CN (1) | CN115952112A (zh) |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3713312B2 (ja) | 1994-09-09 | 2005-11-09 | 株式会社ルネサステクノロジ | データ処理装置 |
US7117290B2 (en) | 2003-09-03 | 2006-10-03 | Advanced Micro Devices, Inc. | MicroTLB and micro tag for reducing power in a processor |
JP2014186397A (ja) * | 2013-03-21 | 2014-10-02 | Fujitsu Ltd | キャッシュメモリ装置、情報処理装置及びキャッシュメモリ制御方法 |
US10606591B2 (en) | 2017-10-06 | 2020-03-31 | International Business Machines Corporation | Handling effective address synonyms in a load-store unit that operates without address translation |
JP7025100B2 (ja) | 2017-10-06 | 2022-02-24 | インターナショナル・ビジネス・マシーンズ・コーポレーション | アドレス変換なしで動作する読み込み/格納ユニットでの実効アドレスのシノニムの処理 |
-
2021
- 2021-10-07 JP JP2021165561A patent/JP2023056289A/ja active Pending
-
2022
- 2022-08-23 US US17/893,333 patent/US11829293B2/en active Active
- 2022-09-06 CN CN202211084268.9A patent/CN115952112A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US11829293B2 (en) | 2023-11-28 |
JP2023056289A (ja) | 2023-04-19 |
US20230110696A1 (en) | 2023-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102244191B1 (ko) | 캐시 및 변환 색인 버퍼를 갖는 데이터 처리장치 | |
US5784590A (en) | Slave cache having sub-line valid bits updated by a master cache | |
US8527708B2 (en) | Detecting address conflicts in a cache memory system | |
US10423528B2 (en) | Operation processing device, information processing apparatus, and control method for operation processing device | |
US7577795B2 (en) | Disowning cache entries on aging out of the entry | |
US20120159080A1 (en) | Neighbor cache directory | |
US8595443B2 (en) | Varying a data prefetch size based upon data usage | |
US8589627B2 (en) | Partially sectored cache | |
US7624234B2 (en) | Directory caches, and methods for operation thereof | |
US20140089587A1 (en) | Processor, information processing apparatus and control method of processor | |
US20170052890A1 (en) | Operation processing device and method for controlling operation processing device | |
US20130132678A1 (en) | Information processing system | |
US8549228B2 (en) | Processor and method of control of processor | |
CN115952112A (zh) | 处理器和运算处理方法 | |
CN114238171B (zh) | 电子设备、数据处理方法和装置、计算机系统 | |
US9053030B2 (en) | Cache memory and control method thereof with cache hit rate | |
CN114020656A (zh) | 多核SOC中非阻塞L1 Cache | |
US11720498B2 (en) | Arithmetic processing device and arithmetic processing method | |
JP5245349B2 (ja) | 登録先ウェイの固定方法、プロセッサ、及び情報処理装置 | |
US6996675B2 (en) | Retrieval of all tag entries of cache locations for memory address and determining ECC based on same | |
US6253301B1 (en) | Method and apparatus for a dedicated physically indexed copy of the data cache tag arrays | |
US9430397B2 (en) | Processor and control method thereof | |
US10521346B2 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
US20230393988A1 (en) | Arithmetic processing device and arithmetic processing method | |
US20120102271A1 (en) | Cache memory system and cache memory control method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |