CN114721722A - 多级高速缓存***及电子设备 - Google Patents
多级高速缓存***及电子设备 Download PDFInfo
- Publication number
- CN114721722A CN114721722A CN202210629279.4A CN202210629279A CN114721722A CN 114721722 A CN114721722 A CN 114721722A CN 202210629279 A CN202210629279 A CN 202210629279A CN 114721722 A CN114721722 A CN 114721722A
- Authority
- CN
- China
- Prior art keywords
- data
- request instruction
- unit
- request
- gpu
- 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
Links
- 239000000872 buffer Substances 0.000 claims abstract description 84
- 230000006870 function Effects 0.000 claims abstract description 27
- 238000012545 processing Methods 0.000 claims abstract description 21
- 238000012986 modification Methods 0.000 claims description 7
- 230000004048 modification Effects 0.000 claims description 7
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 238000013461 design Methods 0.000 abstract description 28
- 238000005516 engineering process Methods 0.000 abstract description 4
- 238000004148 unit process Methods 0.000 abstract description 4
- 230000000694 effects Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 3
- 238000000034 method Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000004377 microelectronic Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- 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
-
- 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
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了一种多级高速缓存***及电子设备。该***将图形处理***GPU的3级缓存划分为多个模块化单元,多个模块化单元至少包括数据缓冲区、标记库单元、数据库单元、状态库单元、数据错过队列单元和逐出缓冲单元,将GPU***3级缓存分解为独立的单元,使得流水管线概念不再重要,每个单元处理自己的功能,不受其他单元的干扰。通过本发明,解决了相关技术中的图形处理***3级缓存通常采用将请求命令联锁到所有流水线阶段的方式,存在设计复杂且缺乏配置灵活性的问题,达到了实现请求指令在不同的功能单元中并行执行和按顺序执行,提高了***性能以及执行延迟时间的灵活性的技术效果。
Description
技术领域
本发明涉及计算机缓存技术领域,尤其涉及一种多级高速缓存***及电子设备。
背景技术
微处理器性能以每年约60%的速度提高。但是,内存访问时间每年提高不到10%。这意味着微处理器速度的改进速度超过了动态随机存取存储器(Dynamic Random AccessMemory,DRAM)速度的改进速度。因此,尽管处理器和内存速度之间的差异已经是个问题,但内存到硬盘的数据存取速度差距会更大。因此,计算机设计人员面临着越来越多的处理器-存取性能差距,这是目前提高计算机***性能的主要障碍。
数据依赖性惩罚是微处理器设计人员要解决的障碍。缓存成为微处理器的一个重要功能。缓存内存演变为多个级别,缓存层次结构是减少数据提取时间最有效的方法。当前用于PC、笔记本电脑、智能手机和平板电脑的微处理器具有内置的缓存层次结构。PC和笔记本电脑通常使用2级(L2)缓存大小进行广告宣传。3级(L3)缓存是CPU使用的专用缓存,通常构建在主板上,在某些特殊处理器中,在CPU模块本身中。它与1级(L1)和L2缓存协同工作,通过防止因提取和执行周期过长而导致的瓶颈来提高计算机性能。
在图形处理器(Graphics Processing Unit,GPU)***中,L3缓存的要求与CPU是类似的。特别是在现在,GPU的市场是多样化的,应用范围广泛,要求不同。物联网、互联汽车、可穿戴设备、医疗设备、游戏、虚拟设备、智能城市、建筑和工厂都在推动着一系列新的、多样化的GPU处理器要求。配置和扩展GPU以满足应用程序要求的能力是GPU的一种很有前途的新技术模型。它提供了高度的灵活性,使GPU的开发人员能够包括他们自己的专有自定义指令。GPU设计还可以根据应用要求定制处理器IP,在性能、功耗和面积方面实现最佳的权衡。此外,GPU技术的定制提供了满足不断发展的标准的能力。如今,从消费者到汽车,各种应用和要求繁多,在单个固定GPU IP上实现标准化的不同类型的应用程序太多。遵循相同的趋势,L3缓存必须为不同的GPU设计提供配置的灵活性。配置包括缓存大小、方式关联数、内存库数量、具有单个读/写配置的输入端口数、灵活的内存延迟、断电选项、纠错代码(ECC)和奇偶校验以及缓存分区。为了适应L3缓存设计的所有要求,有必要采用新的设计方法。
在相关技术中,例如,大多数片上缓存层次结构由两个级别组成(L1和L2),但在缓存层次结构中合并三个级别变得越来越普遍(L1、L2和L3)。共享缓存实现L3有更好的机会优化错过率、延迟和复杂性。又例如,GPU的应用非常广泛,GPU L3缓存设计必须提供灵活性,以便用于各种不同的应用。与微处理器设计一样,L3缓存也有流水线,如图 1所示,L3缓存的流水线包括流水管线S1-S20,其中,L3缓存的请求命令输入和命令信号路由对应流水管线S1-S4,标记数组访问和比较对应流水管线S5-S8,标记数组信号路由对应流水管线S9-S10,数据阵列访问和信号路由对应流水管线S11-S16,输出寄存和信号路由对应流水管线S17-S20。标记数组和数据数组的读取和写入数据。传统设计将请求命令联锁到所有流水线阶段。在考虑缓存错过、缓存替换、数据逐出、数据的预取以及它们之间的所有可能冲突时,设计变得很复杂。传统设计缺乏GPU***所需的所有可能配置所需的灵活性。
针对相关技术中的图形处理***3级缓存通常采用将请求命令联锁到所有流水线阶段的方式,存在设计复杂且缺乏配置灵活性的问题,尚未提出有效地解决方案。
发明内容
本发明实施例提供了一种多级高速缓存***及电子设备,以至少解决相关技术中的图形处理***3级缓存通常采用将请求命令联锁到所有流水线阶段的方式,存在设计复杂且缺乏配置灵活性的技术问题。
根据本发明实施例的一个方面,提供了一种多级高速缓存***,将图形处理***GPU的3级缓存划分为多个模块化单元,多个所述模块化单元至少包括:数据缓冲区,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,并为所述请求指令分配对应的条目,其中,所述条目至少包括所述请求指令的数据地址、请求数据和控制信息;标记库单元,用于接收所述GPU核心集群和/或所述GPU固定功能模块的所述请求指令,根据所述请求指令的数据地址将所述请求指令发送至标记库队列,并按照所述标记库队列的顺序判断标记数组是否命中所述请求指令;数据库单元,分别与所述标记库单元、所述数据缓冲区连接,用于在所述标记数组命中所述请求指令的情况下,则根据命中的所述请求指令的请求地址将命中的所述请求指令发送至数据库队列,并按照所述数据库队列的顺序执行所述请求指令,从所述数据库单元读取数据并写入所述数据缓冲区或者从所述数据缓冲区读取数据并写入所述数据库单元;状态库单元,与所述标记库单元连接,用于接收所述标记数组中命中的所述请求指令,将命中的所述请求指令发送至状态库队列,并按照所述状态库队列的顺序访问所述状态库单元的状态数组,调整命中的所述请求指令的控制信息;数据错过队列单元,分别与所述标记库单元、所述状态库单元连接,用于在所述标记数组中未命中所述请求指令的情况下,则根据未命中的所述请求指令的请求地址将未命中的所述请求发送至数据错过队列,并按照所述数据错过队列的顺序执行所述请求指令访问所述状态库单元以获取替换策略;逐出缓冲单元,与所述数据库单元连接,用于接收从所述数据库单元中的逐出数据,将所述逐出数据发送至逐出缓冲队列,并按照所述逐出缓冲队列的顺序将所述逐出数据发送至内存。
可选地,所述数据缓冲区包括自由列表,所述自由列表用于显示所述数据缓冲区的可用条目总数,其中,在接收到所述请求指令时,从所述自由列表中分配一个所述条目给所述请求指令,在完成所述请求指令后,则将所述条目回收到所述自由列表中。
可选地,所述数据缓冲区通过输入通道单元接收GPU核心集群和/或GPU固定功能模块的请求指令,所述输入通道单元包括:读取单元,用于将所述数据缓冲区中预定条目的数据发送至所述GPU核心集群和/或所述GPU固定功能模块;或者,写入单元,用于从所述输入通道单元读取数据并写入所述数据缓冲区中的所述预定条目或者写入所述内存。
可选地,将所述数据缓冲区中预定条目的数据发送至所述GPU核心集群和/或所述GPU固定功能模块,包括:判断所述预定条目中目标数据包的控制信息对应的有效标志位;若所述有效标志位为高电平,则数据有效,将数据发送至所述GPU核心集群/或所述GPU固定功能模块,并继续判断下一个所述目标数据包。
可选地,所述数据缓冲区的标识采用所述请求指令的数据地址译码后产生的标签,其中,每一个所述标签唯一标识一个所述数据缓冲区。
可选地,根据所述请求指令的数据地址将所述请求指令发送至标记库队列,包括:在所述请求指令为有效请求指令时,将所述数据缓冲区的标识与所述有效请求指令同时发送至所述标记库队列,其中,所述请求指令中的控制信息对应的有效标志位用于标识所述请求指令为所述有效请求指令。
可选地,所述状态库单元的状态数组包括:修改位、锁位和最近最久未使用位,其中,在所述请求指令为写入请求时更新所述修改位,在所述GPU核心集群核心发出所述请求指令时更新锁位,在所述请求指令为写入请求或者读取请求时更新所述最近最久未使用位。
可选地,所述数据错过队列单元还用于在1级、2级和3级缓存均存满且所述GPU核心集群仍发出所述请求指令的情况下,发出缓存逐出请求指令,根据所述替换策略,将最近最久未使用位值最小的标签发送到所述标记库单元进行缓存逐出处理。
可选地,在所述标记数组中未命中所述请求指令的情况下,未命中的所述请求指令直接访问所述标记数组;和/或,在1级、2级和3级缓存均存满且所述GPU核心集群仍发出所述请求指令的情况下,所述缓存逐出请求指令直接访问所述状态数组。
根据本发明实施例的另一个方面,还提供了一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为上述中任意一项所述的多级高速缓存***。
本发明实施例中,将图形处理***GPU的3级缓存划分为多个模块化单元,多个模块化单元至少包括数据缓冲区,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,并为请求指令分配对应的条目,其中,条目至少包括请求指令的数据地址、请求数据和控制信息;标记库单元,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,根据请求指令的数据地址将请求指令发送至标记库队列,并按照标记库队列的顺序判断标记数组是否命中请求指令;数据库单元,分别与标记库单元、数据缓冲区连接,用于在标记数组命中请求指令的情况下,则根据命中的请求指令的请求地址将命中的请求指令发送至数据库队列,并按照数据库队列的顺序执行请求指令,从数据库单元读取数据并写入数据缓冲区或者从数据缓冲区读取数据并写入数据库单元;状态库单元,与标记库单元连接,用于接收标记数组中命中的请求指令,将命中的请求指令发送至状态库队列,并按照状态库队列的顺序访问状态库单元的状态数组,调整命中的请求指令的控制信息;数据错过队列单元,分别与标记库单元、状态库单元连接,用于在标记数组中未命中请求指令的情况下,则根据未命中的请求指令的请求地址将未命中的请求发送至数据错过队列,并按照数据错过队列的顺序执行请求指令访问状态库单元以获取替换策略;逐出缓冲单元,与数据库单元连接,用于接收从数据库单元中的逐出数据,将逐出数据发送至逐出缓冲队列,并按照逐出缓冲队列的顺序将逐出数据发送至内存。也就是说,本发明实施例将GPU***3级缓存分解为独立的单元,使得流水管线概念不再重要,每个单元处理自己的功能,不受其他单元的干扰,进而解决了相关技术中的图形处理***3级缓存通常采用将请求命令联锁到所有流水线阶段的方式,存在设计复杂且缺乏配置灵活性的问题,达到了实现请求指令在不同的功能单元中并行执行和按顺序执行,提高了***性能以及执行延迟时间的灵活性的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为现有技术提供的一种GPU的3级缓存的流水线设计的示意图;
图2为本发明实施例提供的一种多级高速缓存***的示意图;
图3为本发明可选实施例提供的一种标记库单元是模块化单元的示意图;
图4为本发明可选实施例提供的一种L3缓存的整体设计的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于限定特定顺序。
本发明实施例提供一种多级高速缓存***,图2为本发明实施例提供的一种多级高速缓存***的示意图,如图2所示,该多级高速缓存***可以将图形处理***GPU的3级缓存划分为多个模块化单元,多个模块化单元至少包括:数据缓冲区21、标记库单元22、数据库单元23、状态库单元24、数据错过队列单元25以及逐出缓冲单元26。下面对该多级高速缓存***进行详细说明。
数据缓冲区21,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,并为请求指令分配对应的条目,其中,条目至少包括请求指令的数据地址、请求数据和控制信息;标记库单元22,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,根据请求指令的数据地址将请求指令发送至标记库队列,并按照标记库队列的顺序判断标记数组是否命中请求指令;数据库单元23,分别与标记库单元22、数据缓冲区21连接,用于在标记数组命中请求指令的情况下,则根据命中的请求指令的请求地址将命中的请求指令发送至数据库队列,并按照数据库队列的顺序执行请求指令,从数据库单元读取数据并写入数据缓冲区或者从数据缓冲区读取数据并写入数据库单元;状态库单元24,与标记库单元22连接,用于接收标记数组中命中的请求指令,将命中的请求指令发送至状态库队列,并按照状态库队列的顺序访问状态库单元的状态数组,调整命中的请求指令的控制信息;数据错过队列单元25,分别与标记库单元22、状态库单元24连接,用于在标记数组中未命中请求指令的情况下,则根据未命中的请求指令的请求地址将未命中的请求发送至数据错过队列,并按照数据错过队列的顺序执行请求指令访问状态库单元以获取替换策略;逐出缓冲单元26,与数据库单元23连接,用于接收从数据库单元中的逐出数据,将逐出数据发送至逐出缓冲队列,并按照逐出缓冲队列的顺序将逐出数据发送至内存。
上述请求指令包括读请求指令和写请求指令,例如,GPU核心集群包括一个多个GPU核心处理单元,在GPU核心处理单元需要数据时,产生读请求指令,数据处理完输出数据产生写请求指令。
上述标记库队列、数据库队列、状态库队列、数据错过队列以及逐出缓冲队列均为先进先出队列。上述内存为下一级的存储区。根据数据地址的位选择标记库单元采取组相联映射方式译码,例如,1组-cacheline0-0x1000_0000-0x2000_0000,1组-cacheline1-0x1000_0008-0x2000_0008;2组-cacheline0-0x1000_0010-0x2000_0010,2组-cacheline1-0x1000_0018-0x2000_0018。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;和/或,上述各个模块以任意组合的方式位于不同的处理器中。
在上述实施例中,该多级高速缓存***可以将GPU***3级缓存分解为独立的单元,使得流水管线概念不再重要,每个单元处理自己的功能,不受其他单元的干扰,进而解决了相关技术中的图形处理***3级缓存通常采用将请求命令联锁到所有流水线阶段的方式,存在设计复杂且缺乏配置灵活性的问题,达到了实现请求指令在不同的功能单元中并行执行和按顺序执行,提高了***性能以及执行延迟时间的灵活性的技术效果。
在上述多级高速缓存***各个模块化单元之间的连接遵循标准有效请求指令和接受请求指令协议,例如,下一个单元必须接受有效请求指令,否则,该请求指令将重新发送。另外,上述各个模块化单元之间使用"发送和重新发送"协议,也就是发出请求指令和不管。当请求指令准备就绪时,它将被发送到执行模块。如果执行出现问题,则请求指令将从请求指令先入先出队列(First Input First Output,FIFO)中按顺序重新发送;不会出现流水管线停止和联锁。
需要说明的是,每个请求指令都有一个标记ID,要在整个L3缓存***中跟踪。
另外,每个模块化单元由请求指令FIFO和执行模块组成;设备可以接受请求指令FIFO的多个请求指令,请求指令进入请求指令FIFO并按顺序发送到执行模块;执行模块可以具有可变时钟周期延迟。倒计时计数器在允许下一个请求指令进入执行模块之前将时钟周期延迟降至零。计数器的起始计数是可设置的。
在本发明中的执行模块为执行请求指令的单元,在具体实施过程中,可以是数据缓冲区、标记库单元、数据库单元、状态库单元、数据错过队列单元及逐出缓冲单元中的任意一个或多个。
图3为本发明可选实施例提供的一种标记库单元是模块化单元的示意图,如图3所示,该标记库单元是执行模块。标记库单元对应的标记库优先级仲裁逻辑电路对多个GPU核心集群的请求地址以及GPU图像固定功能模块的请求地址进行处理,并发送给对应的请求指令FIFO。请求指令FIFO接收来自多个GPU核集群和图形固定功能模块的请求指令,并一次向标记库(又称为标记数列库)发送一个请求指令。标记库可能需要以个或更多时钟周期来访问数据。延迟计数器用于允许下一个请求指令访问标记库。每个标记库都是一个独立的模块化单元,每个标记库单元执行来自其对应的命令FIFO的请求。
进一步地,如果请求指令是到不同的标记库单元,则它们可以并行执行,从而提供更高的性能。因此,数据库单元中的请求独立执行,允许它们按顺序执行。同样,每个通道单元都是独立的,允许每个通道的有效数据返回到内核的出令状态。
另外,如果请求指令是同一标记库,则可以接收它们进入标记库请求FIFO,并延迟执行直到下一个周期。当该标记库请求FIFO为满,或者达到一定阈值时,其余标记库请求FIFO为空,或者低于阈值时,则转发此请求到另一个标记库请求FIFO。
因此,模块化单元设计类似于微处理器的预留站和功能单元,允许请求在不同的功能单元中并行执行和按顺序执行。
需要说明的是,本发明的模块化单元设计具有以下优点:模块化单元可以通过同一协议接受许多不同的请求源。例如,缓存维护、缓存替换、缓存逐出请求不会中断访问标记数组的10个管道阶段;流水线管道并不重要。每个模块化单元都有自己的可配置或可编程延迟;模块化单元使用"发送和重播"协议来避免阻止其他高优先级请求,从而避免在设计中死锁。例如,缓存维护、缓存替换、缓存逐出请求可以随时访问标记数组,而不会干扰正常请求;模块化单元可独立合成,用于计时,使性能更具可预测性;模块化单元可以在单元级别进行独立验证,从而降低验证复杂性。
上述多级高速缓存***提出的L3缓存的模块化单元对于嵌入式内存***来说具有极大的灵活性。由于模块化单元设计,L3缓存设计在相对较短的时间上完成,资源最少。L3缓存还可以在多种类型的多核***和SoC中配置和编程。可以用作多群集***中的L3缓存。在当前从物联网到汽车到高端应用的多元化市场中,需要一个可扩展且可配置的微处理器来实现最佳的性能,功耗,面积。灵活的L3缓存同样可以应用于下一代高性能GPU中。
在一种可选的实施方式中,上述数据缓冲区包括自由列表,自由列表用于显示数据缓冲区的可用条目总数,其中,在接收到请求指令时,从自由列表中分配一个条目给请求指令,在完成请求指令后,则将条目回收到自由列表中。
上述条目是指这个访问缓存的一次完整数据空间,其包括请求指令的数据地址、请求数据和控制信息,以读为例,可以包括读地址、读数据(无数据,tag命中后装数据)、控制信息包含的读请求标志和有效标志、数据一致性标志、奇偶校验标志等;以写为例,可以包括写地址、写数据(有待写的数据,tag命中后写入数据库)以及控制信息包含的写请求标志和有效标志、数据一致性标志、奇偶校验标志等。
在一种可选的实施方式中,数据缓冲区通过输入通道单元接收GPU核心集群和/或GPU固定功能模块的请求指令,输入通道单元包括:读取单元,用于将数据缓冲区中预定条目的数据发送至GPU核心集群和/或GPU固定功能模块;或者,写入单元,用于从输入通道单元读取数据并写入数据缓冲区中的预定条目或者写入内存。
在一种可选的实施方式中,将数据缓冲区中预定条目的数据发送至GPU核心集群和/或GPU固定功能模块,包括:判断预定条目中目标数据包的控制信息对应的有效标志位;若有效标志位为高电平,则数据有效,将数据发送至GPU核心集群/或GPU固定功能模块,并继续判断下一个目标数据包。
根据不同的读写策略,比如说回写,写命中则有效位拉高(有效),透写(直写/通写)写命中,再写入到下一级的存储区,这时数据才有效。
在一种可选的实施方式中,数据缓冲区的标识采用请求指令的数据地址译码后产生的标签,其中,每一个标签唯一标识一个数据缓冲区。
上述标签由对数据地址译码产生,每个标签对应一个向缓存发起数据请求指令,通过读一个地址或者写一个地址,就可以将地址中的上述读取出来或者向地址中写入数据。另外,标签中会有1bit数据位表示是否有效,若该位为0则无效,若该位为1则有效。
在一种可选的实施方式中,根据请求指令的数据地址将请求指令发送至标记库队列,包括:在请求指令为有效请求指令时,将数据缓冲区的标识与有效请求指令同时发送至标记库队列,其中,请求指令中的控制信息对应的有效标志位用于标识请求指令为有效请求指令。
在具体实施过程中,可以根据来自输入通道的有效请求指令,数据地址被解码并路由到特定的标记库队列,同时数据缓冲区的标识也附加到请求指令中并送到标记库队列。
在一种可选的实施方式中,状态库单元的状态数组至少包括:修改位、锁位和最近最久未使用位,其中,在请求指令为写入请求时更新修改位,在GPU核心集群核心发出请求指令时更新锁位,在请求指令为写入请求或者读取请求时更新最近最久未使用位。
上述状态库单元的状态数组包括但不限于修改位、锁位和最近最久未使用位。另外,上述状态库单元的状态数组的更新时机也是不同的,例如,可以在请求指令为写入请求时更新修改位,可以在GPU核心集群核心发出请求指令时更新锁位以及在请求指令为写入请求或者读取请求时更新最近最久未使用位。
在一种可选的实施方式中,数据错过队列单元还用于在1级、2级和3级缓存均存满且GPU核心集群仍发出请求指令的情况下,发出缓存逐出请求指令,根据替换策略,将最近最久未使用位值最小的标签发送到标记库单元进行缓存逐出处理。
需要说明的是,上述替换策略为某个缓存数据命中的少然后缓存空间不够用时,产生数据替换的逻辑。上述替换策略包括但不限于循环替换、随机替换等。
在一种可选的实施方式中,在标记数组中未命中请求指令的情况下,未命中的请求指令直接访问标记数组;和/或,在1级、2级和3级缓存均存满且GPU核心集群仍发出请求指令的情况下,缓存逐出请求指令直接访问状态数组。
需要说明的是,若标记数组中未命中请求指令,则未命中的请求指令可以不用经过标记库队列,而直接访问标记数组;若1级、2级和3级缓存均存满且GPU核心集群仍发出请求指令,则缓存逐出请求指令可以不用经过逐出缓冲队列,而直接访问状态数组。通过上述方式,从外部内存获取的未命中请求指令的数据将直接发送到数据缓冲区;另外还可以将提取的数据写入数据库的过程类似于来自输入通道的写入请求,当数据有效时,则写入数据库。
根据本发明实施例的另一个方面,还提供了一种电子设备,该电子设备包括:处理器;用于存储处理器可执行指令的存储器;其中,处理器被配置为上述中任意一项的多级高速缓存***。
下面对本发明一种可选的实施方式进行详细说明。
图4为本发明可选实施例提供的一种L3缓存的整体设计的示意图,如图4所示,L3缓存被分解为许多模块化单元。每个数据库、每个标记库和每个输入通道都是单独的模块化单元。每个模块化单元独立执行请求指令并发送到下一个模块化单元。
L3缓存的中心单元将请求的数据地址译码后产生tag(标签)分配给单个请求的数据缓冲区。收到新请求时,数据缓冲区中的条目将分配给该请求。条目将在整个L3缓存中使用,包含请求地址数据控制信息)数据缓冲区主要特点包括:
自由列表显示数据缓冲区中的可用条目总数。每当新请求发生时,从自由列表中分配一个条目给新请求,完成请求后,该条目被回收到自由列表中。
每个数据缓冲区条目都是一个缓存行。缓存行表示L3缓存数组的数据输入或输出。除了数据之外,每个条目都有请求地址和控制信息(包含读/写标志、数据有效标志、数据一致性标志、奇偶校验标志等)。缓存行的大小为固定值,由数据地址、读/写数据、控制信息组成,能够直接从输入通道将GPU核心集群的数据读取/写入数据到L3数据库,或者从外部内存提取的数据到L3数据库时,不会产生数据冲突。数据缓冲区类似于超标量乱序CPU中的重新排序缓冲区(Re-order Buffer,ROB),其中,ROB中的每个条目都分配给对应的一个指令。
读/写输入通道单元,每个输入通道对应一个模块化单元。请求进入队列并按顺序执行。输入请求的执行是读取和写入数据缓冲区。
在数据缓冲区中为每个请求分配一个条目。读取单元根据不同的写读策略,判断条目中的第一个数据包控制信息的标志位,如果该条目的数据有效标志位为高电平,则数据有效,它会将数据发送回GPU核心集群并继续判断下一个数据包。
写入单元从输入通道读取数据并写入数据缓冲区中的指定条目,在写回策略中,写命中,则有效位拉高(有效),在写穿策略中(写直/写通),写命中,再写入到下一级的存储区,完成后有效位拉高。数据库单元负责获取有效数据并写入数据库。
标记库单元,每个标记库(又称为标记数列库)对应一个模块化单元。每个标记库单元由FIFO和标记数组组成。根据地址的位选择标记库单位。根据来自输入通道的有效请求,请求地址由标记库优先级仲裁逻辑电路进行解码并路由到特定的标记库队列。数据缓冲区标识也附加到请求中并送到标记库请求FIFO。请求FIFO按顺序执行请求。将访问并检查标记数组判断命中和错过。标记命中转发请求到相应的数据库。标记错过将请求转发到数据错过队列FIFO。
数据库单元,每个数据库对应一个模块化单元。每个数据库单元由指令FIFO和数据库阵列组成。根据请求地址的位选择数据库单元。如果请求在标记数组中命中,则它会根据请求地址将请求发送到相应的数据库队列。队列按顺序执行请求。对于读取请求,它从数据库读取数据并使用数据缓冲区标识写入数据缓冲区条目。对于写入请求,它从数据缓冲区读取有效数据并写入数据库。
状态库单元,每个状态库一个模块化单元。每个状态库单元由队列和状态数组组成。来自标记库单元的请求进入状态库指令FIFO并按顺序访问状态数组。状态包括修改位、锁位和最近最久未使用(Least Recently Used,LRU)位。GPU内核和其他单元的写入请求时更新修改位,GPU核心集群核心发出请求时更新锁位,每个读取或写入请求时都更新LRU位。
数据错过队列单元是一个模块化单元,用于接收来自标记库单元的标记错过请求到队列中。队列按顺序执行错过请求。它发送推测性请求以从外部内存获取缓存行。错过请求还将访问状态库以获取替换策略信息。当缓存空间存满,L3数据库存满,但是GPU核心集群仍有新的读写请求发出时,进行缓存逐出请求,根据替换策略,将LRU位值较小的tag发送到标记库单位进行驱逐。错过和逐出请求绕过标记和状态库队列直接访问标记和状态数组。从外部内存获取的错过请求的数据将直接发送到数据缓冲区。将提取的数据写入数据库的过程类似于来自输入通道的写入请求,当数据有效时,则写入数据库。
逐出缓冲单元是一个模块化单元,用于接收从数据库单元中逐出的数据。驱逐单元按顺序执行被逐出的数据。当数据有效时,写入请求将发送到外部内存。
上述GPU L3设计的另外一个特点是来自于GPU核心集群(包括GPU流处理单元,部分通用的计算单元)和GPU固定功能模块的请求指令拥有可以根据算法需要,软件重新编辑,动态调整的优先级。这样能跟好的服务于OpenGL的图形流水管线。
模块化单元设计广泛使用命令请求FIFO。相同的FIFO结构在所有单元中都使用。在功率方面,FIFO比移位寄存器更好的替代方案。数据写入一次条目,而不是写入和读取以移入下一个条目。在执行完成之前,将保留数据。可以通过将读取指针移动到保存的指针来重播请求。
深流微电子的XST-G是拥有L3缓存的高性能GPU,L3缓存旨在匹配XST-G内核的时钟频率,以便于接口和尽可能高的性能,但SRAM阵列可能需要多个周期才能访问数据。L3缓存可以配置各种大小从8MB到32MB的缓存大小。8MB和32MB缓存的访问延迟不同。通过模块化单元设计,访问延迟通过简单的计数器实现。当请求从队列发送到标记或数据库时,延迟计数器将倒数为零,然后再允许接受下一个请求。此过程独立于L3缓存中的所有其他单位。延迟计数器的这一简单机制允许进一步的灵活性,例如,低功耗/区域的高密度静态随机存取存储器(Static Random-Access Memory,SRAM)的接入时间与高速SRAM的性能不同;不同的延迟计数器值可用于从8MB到32MB的不同L3缓存大小;误差校正码(Error CorrectingCode,ECC)实现的额外循环,只需将计数器再拖延一个时钟周期即可完成纠错;为单个数据库单元添加额外的路由延迟周期延迟,只需向执行延迟添加额外的时钟周期即可修复路由延迟导致的计时路径;数据库可以具有自定义访问延迟;添加额外的循环延迟,用于与其他内存控制器单元共享SRAM阵列。
模块化单元设计在内存访问延迟和计时方面非常灵活。例如,输入通道读取单元不关心接收数据在何时何地。只要数据缓冲区中的数据有效,则输入通道读取单元将数据发送回输入通道。有效数据可以是2-5个时钟周期中的数据库,也可以来自数百个时钟周期内的外部内存。数据库可以采取额外的时钟周期进行ECC校正,而输入通道读取单元不知道这一点。另外,模块化单元设计允许根据IP嵌入式设计或应用程序的要求对内存访问延迟进行编程或配置,这与简单算术逻辑单元(Arithmetic and Logic Unit,ALU)和复杂ALU的不同执行时间类似。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种多级高速缓存***,其特征在于,将图形处理***GPU的3级缓存划分为多个模块化单元,多个所述模块化单元至少包括:
数据缓冲区,用于接收GPU核心集群和/或GPU固定功能模块的请求指令,并为所述请求指令分配对应的条目,其中,所述条目至少包括所述请求指令的数据地址、请求数据和控制信息;
标记库单元,用于接收所述GPU核心集群和/或所述GPU固定功能模块的所述请求指令,根据所述请求指令的数据地址将所述请求指令发送至标记库队列,并按照所述标记库队列的顺序判断标记数组是否命中所述请求指令;
数据库单元,分别与所述标记库单元、所述数据缓冲区连接,用于在所述标记数组命中所述请求指令的情况下,则根据命中的所述请求指令的请求地址将命中的所述请求指令发送至数据库队列,并按照所述数据库队列的顺序执行所述请求指令,从所述数据库单元读取数据并写入所述数据缓冲区或者从所述数据缓冲区读取数据并写入所述数据库单元;
状态库单元,与所述标记库单元连接,用于接收所述标记数组中命中的所述请求指令,将命中的所述请求指令发送至状态库队列,并按照所述状态库队列的顺序访问所述状态库单元的状态数组,调整命中的所述请求指令的控制信息;
数据错过队列单元,分别与所述标记库单元、所述状态库单元连接,用于在所述标记数组中未命中所述请求指令的情况下,则根据未命中的所述请求指令的请求地址将未命中的所述请求发送至数据错过队列,并按照所述数据错过队列的顺序执行所述请求指令访问所述状态库单元以获取替换策略;
逐出缓冲单元,与所述数据库单元连接,用于接收从所述数据库单元中的逐出数据,将所述逐出数据发送至逐出缓冲队列,并按照所述逐出缓冲队列的顺序将所述逐出数据发送至内存。
2.根据权利要求1所述的多级高速缓存***,其特征在于,所述数据缓冲区包括自由列表,所述自由列表用于显示所述数据缓冲区的可用条目总数,其中,在接收到所述请求指令时,从所述自由列表中分配一个所述条目给所述请求指令,在完成所述请求指令后,则将所述条目回收到所述自由列表中。
3.根据权利要求1所述的多级高速缓存***,其特征在于,所述数据缓冲区通过输入通道单元接收GPU核心集群和/或GPU固定功能模块的请求指令,所述输入通道单元包括:
读取单元,用于将所述数据缓冲区中预定条目的数据发送至所述GPU核心集群和/或所述GPU固定功能模块;
或者,写入单元,用于从所述输入通道单元读取数据并写入所述数据缓冲区中的所述预定条目或者写入所述内存。
4.根据权利要求3所述的多级高速缓存***,其特征在于,将所述数据缓冲区中预定条目的数据发送至所述GPU核心集群和/或所述GPU固定功能模块,包括:
判断所述预定条目中目标数据包的控制信息对应的有效标志位;
若所述有效标志位为高电平,则数据有效,将数据发送至所述GPU核心集群/或所述GPU固定功能模块,并继续判断下一个所述目标数据包。
5.根据权利要求1所述的多级高速缓存***,其特征在于,所述数据缓冲区的标识采用所述请求指令的数据地址译码后产生的标签,其中,每一个所述标签唯一标识一个所述数据缓冲区。
6.根据权利要求1所述的多级高速缓存***,其特征在于,根据所述请求指令的数据地址将所述请求指令发送至标记库队列,包括:
在所述请求指令为有效请求指令时,将所述数据缓冲区的标识与所述有效请求指令同时发送至所述标记库队列,其中,所述请求指令中的控制信息对应的有效标志位用于标识所述请求指令为所述有效请求指令。
7.根据权利要求1所述的多级高速缓存***,其特征在于,所述状态库单元的状态数组包括:修改位、锁位和最近最久未使用位,其中,在所述请求指令为写入请求时更新所述修改位,在所述GPU核心集群核心发出所述请求指令时更新锁位,在所述请求指令为写入请求或者读取请求时更新所述最近最久未使用位。
8.根据权利要求1所述的多级高速缓存***,其特征在于,所述数据错过队列单元还用于在1级、2级和3级缓存均存满且所述GPU核心集群仍发出所述请求指令的情况下,发出缓存逐出请求指令,根据所述替换策略,将最近最久未使用位值最小的标签发送到所述标记库单元进行缓存逐出处理。
9.根据权利要求8所述的多级高速缓存***,其特征在于,在所述标记数组中未命中所述请求指令的情况下,未命中的所述请求指令直接访问所述标记数组;和/或,在1级、2级和3级缓存均存满且所述GPU核心集群仍发出所述请求指令的情况下,所述缓存逐出请求指令直接访问所述状态数组。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为权利要求1至9中任意一项所述的多级高速缓存***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210629279.4A CN114721722B (zh) | 2022-06-06 | 2022-06-06 | 多级高速缓存***及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210629279.4A CN114721722B (zh) | 2022-06-06 | 2022-06-06 | 多级高速缓存***及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114721722A true CN114721722A (zh) | 2022-07-08 |
CN114721722B CN114721722B (zh) | 2022-09-02 |
Family
ID=82233005
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210629279.4A Active CN114721722B (zh) | 2022-06-06 | 2022-06-06 | 多级高速缓存***及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721722B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114978885A (zh) * | 2022-08-02 | 2022-08-30 | 深圳市华曦达科技股份有限公司 | 一种日志管理方法、装置、计算机设备及*** |
RU2818670C1 (ru) * | 2023-12-27 | 2024-05-03 | Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии") | Способ и устройство кэширования блоков данных |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405285B1 (en) * | 1999-06-25 | 2002-06-11 | International Business Machines Corporation | Layered local cache mechanism with split register load bus and cache load bus |
CN101340569A (zh) * | 2007-07-06 | 2009-01-07 | 扬智科技股份有限公司 | 高速缓存及其数据处理方法 |
US20100306477A1 (en) * | 2009-05-28 | 2010-12-02 | Luttrell Mark A | Store prefetching via store queue lookahead |
US20180032431A1 (en) * | 2016-07-26 | 2018-02-01 | Joydeep Ray | Banking Graphics Processor Shared Local Memory |
CN108804349A (zh) * | 2017-05-05 | 2018-11-13 | 三星电子株式会社 | 多处理器***,数据管理方法和非暂时性计算机可读媒体 |
CN109313567A (zh) * | 2016-06-28 | 2019-02-05 | 英特尔公司 | 虚拟化精确的基于事件的采样 |
US20190265984A1 (en) * | 2016-03-30 | 2019-08-29 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
CN111949578A (zh) * | 2020-08-04 | 2020-11-17 | 西安电子科技大学 | 基于dfi标准的ddr3控制器 |
-
2022
- 2022-06-06 CN CN202210629279.4A patent/CN114721722B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6405285B1 (en) * | 1999-06-25 | 2002-06-11 | International Business Machines Corporation | Layered local cache mechanism with split register load bus and cache load bus |
CN101340569A (zh) * | 2007-07-06 | 2009-01-07 | 扬智科技股份有限公司 | 高速缓存及其数据处理方法 |
US20100306477A1 (en) * | 2009-05-28 | 2010-12-02 | Luttrell Mark A | Store prefetching via store queue lookahead |
US20190265984A1 (en) * | 2016-03-30 | 2019-08-29 | Sony Interactive Entertainment Inc. | Deriving application-specific operating parameters for backwards compatiblity |
CN109313567A (zh) * | 2016-06-28 | 2019-02-05 | 英特尔公司 | 虚拟化精确的基于事件的采样 |
US20180032431A1 (en) * | 2016-07-26 | 2018-02-01 | Joydeep Ray | Banking Graphics Processor Shared Local Memory |
CN108804349A (zh) * | 2017-05-05 | 2018-11-13 | 三星电子株式会社 | 多处理器***,数据管理方法和非暂时性计算机可读媒体 |
CN111949578A (zh) * | 2020-08-04 | 2020-11-17 | 西安电子科技大学 | 基于dfi标准的ddr3控制器 |
Non-Patent Citations (1)
Title |
---|
刘士建: ""基于CPU-GPU异构架构下Cache优化技术的研究"", 《中国优秀硕士学位论文全文数据库(电子期刊)》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114978885A (zh) * | 2022-08-02 | 2022-08-30 | 深圳市华曦达科技股份有限公司 | 一种日志管理方法、装置、计算机设备及*** |
RU2818670C1 (ru) * | 2023-12-27 | 2024-05-03 | Общество с ограниченной ответственностью "Облачные технологии" (ООО "Облачные технологии") | Способ и устройство кэширования блоков данных |
Also Published As
Publication number | Publication date |
---|---|
CN114721722B (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9032145B2 (en) | Memory device and method having on-board address protection system for facilitating interface with multiple processors, and computer system using same | |
US6349363B2 (en) | Multi-section cache with different attributes for each section | |
US6366984B1 (en) | Write combining buffer that supports snoop request | |
US6665774B2 (en) | Vector and scalar data cache for a vector multiprocessor | |
CN113853593A (zh) | 支持清空写入未命中条目的受害者高速缓存 | |
US7814292B2 (en) | Memory attribute speculation | |
US8407432B2 (en) | Cache coherency sequencing implementation and adaptive LLC access priority control for CMP | |
US10545870B2 (en) | Arithmetic processing device and arithmetic processing device control method | |
US20230214326A1 (en) | Computer Memory Expansion Device and Method of Operation | |
JP2006517040A (ja) | キャッシュラインサイズが異なる第一レベルキャッシュと第二レベルキャッシュを備えたマイクロプロセッサ | |
WO2010132655A2 (en) | Cache coherent support for flash in a memory hierarchy | |
US12001351B2 (en) | Multiple-requestor memory access pipeline and arbiter | |
US10095548B2 (en) | Mechanism for waking common resource requests within a resource management subsystem | |
JP5328792B2 (ja) | プロセッサの非常にアソシエティビティの高いキャッシュメモリ用のセカンドチャンス置換機構 | |
US9135177B2 (en) | Scheme to escalate requests with address conflicts | |
US7809889B2 (en) | High performance multilevel cache hierarchy | |
CN114721722B (zh) | 多级高速缓存***及电子设备 | |
US20090031088A1 (en) | Method and apparatus for handling excess data during memory access | |
US7464227B2 (en) | Method and apparatus for supporting opportunistic sharing in coherent multiprocessors | |
US6976130B2 (en) | Cache controller unit architecture and applied method | |
US7035981B1 (en) | Asynchronous input/output cache having reduced latency |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |