CN115129442A - 用于调度元数据请求的系统、装置和方法 - Google Patents
用于调度元数据请求的系统、装置和方法 Download PDFInfo
- Publication number
- CN115129442A CN115129442A CN202210182074.6A CN202210182074A CN115129442A CN 115129442 A CN115129442 A CN 115129442A CN 202210182074 A CN202210182074 A CN 202210182074A CN 115129442 A CN115129442 A CN 115129442A
- Authority
- CN
- China
- Prior art keywords
- metadata
- data transaction
- priority level
- bandwidth
- request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000015654 memory Effects 0.000 claims abstract description 397
- 230000005540 biological transmission Effects 0.000 claims abstract description 113
- 238000012546 transfer Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 18
- 238000007667 floating Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 238000000638 solvent extraction Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 241001522296 Erithacus rubecula Species 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1684—Details of memory controller using multiple buses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0024—Peripheral component interconnect [PCI]
Abstract
本申请公开了用于调度元数据请求的系统、装置和方法。在一个实施例中,一种装置包括存储器和调度器。调度器耦合至存储器和存储器控制器。存储器存储多个元数据请求。多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联。调度器至少部分地基于与多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度第一元数据请求到存储器控制器的传送。第一带宽部分与第一元数据优先级级别相关联。描述并要求保护其他实施例。
Description
技术领域
实施例涉及计算机系统中的数据通信。
背景技术
计算平台典型地包括多个线程或核。由不同的核生成的数据事务经常具有不同的优先级级别。数据事务的示例包括读取数据事务和写入数据事务。所有的数据事务均与元数据相关联。元数据典型地包括关于与数据事务相关联的用户代码或数据的辅助和/或次级信息。元数据的示例为安全元数据,包括但不限于存储器安全性标签、访问许可、存储器加密信息、以及完整性信息。元数据经常被存储在由存储器控制器主控的存储器的被隔绝的部分中。
附图说明
图1是包括存储器通信量调度器的系统的实施例的框图表示。
图2是存储器通信量调度器的实施例的框图表示。
图3是将数据事务从核传送至存储器通信量调度器的方法的实施例的流程图表示。
图4是将存储器访问请求置于存储器访问请求队列中的方法的实施例的流程图表示。
图5是对存储器访问请求到存储器控制器的传送进行调度的方法的实施例的流程图表示。
图6是包括经加权的元数据请求的存储器事务调度队列的实施例的示例。
图7是包括经加权的元数据请求的存储器事务调度队列的实施例的示例。
图8是管理数据事务从核到存储器通信量调度器的传送的方法的实施例的流程图表示。
图9是动态地调整用于高优先级元数据请求和低优先级元数据请求的传送的元数据带宽的分配的方法的实施例的流程图表示。
图10是管理数据事务从核到存储器通信量调度器的传送的方法的实施例的流程图表示。
图11是将元数据请求调度至存储器控制器的方法的实施例的流程图表示。
图12A和图12B图示更具体的示例性有序核架构的框图。
图13是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、并且可具有集成图形器件的处理器的框图。
图14是根据实施例的第一更具体的示例性系统的框图。
图15是根据实施例的SoC的框图。
图16是根据实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。
具体实施方式
当计算平台处的多个核中的核生成数据事务(诸如例如,读取数据事务或写入数据事务)时,该数据事务可与元数据相关联。元数据典型地包括关于与数据事务相关联的用户代码或数据的辅助和/或次级信息。元数据被存储在由存储器控制器主控的存储器中。
计算平台可包括与存储器控制器相关联并由核共享的元数据高速缓存。元数据高速缓存典型地被定位成靠近存储器控制器,并且存储存储器中所存储的元数据的子集。当对用户代码和/或数据的访问触发对与数据事务相关联的元数据的访问时,元数据从存储器被取出,并且所取出的元数据被存储在元数据高速缓存处。元数据高速缓存处所存储的元数据可用于服务对该元数据的未来请求。
存储器通信量调度器管理存储器访问请求到存储器控制器的调度。存储器控制器根据存储器访问请求从存储器检取数据。存储器访问请求包括读取数据事务、写入数据事务和元数据请求。
不同的数据事务与不同的数据事务优先级级别或服务质量(QoS)类别相关联。与数据事务相关联的元数据继承数据事务优先级级别作为元数据优先级级别。在从核接收到数据事务时,存储器通信量调度器进行检查,以查看在元数据高速缓存中是否存在与该数据事务相关联的元数据。如果在元数据高速缓存中不存在该元数据,则存储器通信量调度器生成元数据请求以供传送至存储器控制器,以从存储器检取该元数据。存储器通信量调度器基于与父数据事务相关联的QoS类别来确定元数据请求是否为高优先级元数据请求或低优先级元数据请求中的一者。
存储器通信量调度器通过基于存储器访问请求的优先级在不同类别的存储器通信量之间对存储器带宽(也被称为存储器访问带宽)进行分区以对存储器访问请求到存储器控制器的传送进行调度。存储器访问带宽的第一部分被分配用于读取数据事务的传送,存储器访问带宽的第二部分被分配用于写入数据事务的传送,并且存储器访问带宽的第三部分被分配用于元数据请求的传送。存储器访问带宽的被分配用于元数据请求的部分进一步被划分为高优先级元数据带宽和低优先级元数据带宽。高优先级元数据带宽被分配用于高优先级元数据请求的传送,并且低优先级元数据带宽被分配用于低优先级元数据请求的传送。低优先级元数据带宽小于高优先级元数据带宽。
存储器通信量调度器基于高优先级元数据带宽和高优先级元数据请求到达存储器通信量调度器所按照的次序来调度高优先级元数据请求的传送,并且基于低优先级元数据带宽和低优先级元数据请求到达存储器通信量调度器所按照的次序来调度低优先级元数据请求的传送。
参考图1,示出包括存储器通信量调度器106的系统100的实施例的框图表示。系统100可以是例如服务器计算机、台式计算机或膝上型计算机的至少部分。系统100包括至少一个核102、数据高速缓存104、存储器通信量调度器106、元数据高速缓存108、存储器控制器110、以及存储器112。系统100可包括促进系统100的操作的附加组件。尽管示出系统100的一种配置,但替代实施例可包括含存储器通信量调度器106的系统的替代配置。
除可由核102执行的其他功能之外,核102中的每个核102被配置成用于生成数据事务。数据事务的示例包括读取数据事务和写入数据事务。在实施例中,核102中的每个核102被配置成用于生成包括数据事务优先级标签的数据事务。与数据事务相关联的数据事务优先级标签限定该数据事务的数据事务优先级级别。在实施例中,数据事务优先级级别包括高数据事务优先级级别和低数据事务优先级级别。在替代实施例中,数据事务优先级级别可包括附加的数据事务优先级级别。
在实施例中,核102中的每个核102被配置成用于生成具有特定数据事务优先级级别的数据事务。核102中的每个核102的核标识符与特定的数据事务优先级级别相关联。在实施例中,系统100可包括两个核102,其中,这两个核102中的第一核102被配置成用于生成具有高数据事务优先级级别的数据事务,并且这两个核102中的第二核102被配置成用于生成具有低数据事务优先级级别的数据事务。第一核102的核标识符与具有高数据事务优先级级别的数据事务相关联,并且第二核102的第二核标识符与具有低数据事务优先级级别的数据事务相关联。尽管已描述具有两个核102和两个数据事务优先级级别的实施例,但替代实施例可包括多于两个的核以及多于两个的数据事务优先级级别。
一个或多个核102通信地耦合至数据高速缓存104。数据高速缓存104存储存储器112处所存储的数据的子集。当核102生成针对数据的读取数据事务时,数据从存储器112被取出。所取出的数据被存储在数据高速缓存104中,并且可用于由核102中的一个核102生成的未来读取数据事务中的、对该数据的未来请求。
存储器通信量调度器106通信地耦合至一个或多个核102。在实施例中,存储器通信量调度器106经由数据高速缓存104通信地耦合至一个或多个核102。存储器通信量调度器106通信地耦合至存储器控制器110并且耦合至元数据高速缓存108。存储器控制器110通信地耦合至存储器112。存储器112由存储器控制器110主控。
在实施例中,每个读取数据事务与元数据相关联。在实施例中,读取数据事务中的一些读取数据事务与元数据相关联。在实施例中,每个写入数据事务与元数据相关联。在实施例中,写入数据事务中的一些写入数据事务与元数据相关联。在实施例中,每个数据事务(包括读取数据事务和写入数据事务)与元数据相关联。在实施例中,数据事务中的一些数据事务与元数据相关联。元数据包括关于与数据事务相关联的用户代码或数据的辅助和/或次级信息。元数据的示例为安全元数据,包括但不限于存储器安全性标签、访问许可、存储器加密信息、以及完整性信息。在实施例中,元数据被存储在存储器112的被隔绝的部分中。
元数据高速缓存108被配置成用于存储存储器112中所存储的元数据的子集。在实施例中,元数据高速缓存108被设置成靠近于存储器通信量调度器106。在实施例中,元数据高速缓存108被设置成靠近于存储器控制器110。元数据高速缓存108被核102共享。当对用户代码和/或数据的访问触发对与数据事务相关联的元数据的访问时,存储器通信量调度器106被配置成用于对向存储器控制器112的元数据请求传送进行调度。存储器控制器110被配置成用于从存储器112取出元数据。所取出的元数据被存储在元数据高速缓存108中,并且可用于服务对该元数据的未来请求。
存储器通信量调度器106被配置成用于调度存储器访问请求以供传送至存储器控制器110。存储器访问请求包括读取数据事务、写入数据事务和元数据请求。存储器通信量调度器106被配置成用于通过在不同类别的存储器通信量之间对存储器带宽(也被称为存储器请求访问带宽)进行分区以将存储器访问请求传送至存储器控制器110。例如,存储器请求访问带宽包括读取数据事务带宽、写入数据事务带宽、以及元数据带宽。存储器通信量调度器106被配置成用于为读取数据事务的传送分配读取数据事务带宽,为写入数据事务的传送分配写入数据事务带宽,并为元数据请求的传送分配元数据带宽。在实施例中,存储器通信量调度器106被配置成用于经由写入数据事务带宽、按照写入数据事务在存储器通信量调度器106处被接收的次序对写入数据事务的传送进行调度,并且用于经由读取数据事务带宽、按照读取数据事务在存储器通信量调度器106处被接收的次序对读取数据事务经由读取数据事务带宽的传送进行调度。
元数据带宽包括高优先级元数据带宽和低优先级元数据带宽。在实施例中,元数据带宽被分区为高优先级元数据带宽和低优先级元数据带宽。存储器通信量调度器106被配置成用于为高优先级元数据请求的传送分配高优先级元数据带宽,并且为低优先级元数据请求的传送分配低优先级元数据带宽。低优先级元数据带宽典型地小于高优先级元数据带宽。在实施例中,存储器通信量调度器106被配置成用于基于高优先级元数据带宽和高优先级元数据请求在存储器通信量调度器106处被接收的次序来调度高优先级元数据请求的传送,并且用于基于低优先级元数据带宽和低优先级元数据请求在存储器通信量调度器106处被接收的次序来调度低优先级元数据请求的传送。
在实施例中,元数据带宽的被规定为高优先级元数据带宽的部分和元数据带宽的被规定为低优先级元数据带宽的部分由用户来限定。在实施例中,元数据带宽的被规定为高优先级元数据带宽的部分和元数据带宽的被规定为低优先级元数据带宽的部分基于元数据请求中作为高优先级元数据请求的部分和元数据请求中作为低优先级元数据请求的部分来动态地调整。在实施例中,高优先级元数据请求中的每一个可与高优先级子级别相关联,并且低优先级元数据请求中的每一个可与低优先级子级别相关联。高优先级元数据高带宽可被分区为多个高优先级子级别元数据带宽,其中,高优先级子级别元数据带宽中的每一个被分配用于与同一关联的元数据高优先级子级别相关联的元数据请求的传送。类似地,低优先级元数据高带宽可被分区为多个低优先级子级别元数据带宽,其中,低优先级子级别元数据带宽中的每一个被分配用于与同一关联的元数据低优先级子级别相关联的元数据请求的传送。在替代实施例中,元数据带宽可包括多于两个的元数据优先级级别带宽,其中这些元数据优先级带宽中的每一个被分配用于具有特定元数据优先级级别的元数据请求的传送。
在实施例中,读取数据事务带宽包括高优先级读取数据事务带宽和低优先级读取数据事务带宽。在实施例中,读取数据事务带宽被分区为高优先级读取数据事务带宽和低优先级读取数据事务带宽。存储器通信量调度器106被配置成用于为高优先级读取数据事务的传送分配高优先级读取数据事务带宽,并且为低优先级读取数据事务的传送分配低优先级读取数据事务带宽。低优先级读取数据事务带宽典型地小于高优先级读取数据事务带宽。在实施例中,存储器通信量调度器106被配置成用于基于高优先级读取数据事务带宽和高优先级读取数据事务在存储器通信量调度器106处被接收所按照的次序来调度高优先级读取数据事务的传送,并且用于基于低优先级读取数据事务带宽和低优先级读取数据事务在存储器通信量调度器106处被接收所按照的次序来调度低优先级读取数据事务的传送。
在实施例中,读取数据事务带宽的被规定为高优先级读取数据事务带宽的部分和读取数据事务带宽的被规定为低优先级读取数据事务带宽的部分由用户来限定。在实施例中,读取数据事务带宽的被规定为高优先级读取数据事务带宽的部分、读取数据事务带宽的被规定为低优先级读取数据事务带宽的部分基于读取数据事务中作为高优先级读取数据事务的部分和读取数据事务中作为低优先级读取数据事务的部分来动态地调整。在替代实施例中,读取数据事务带宽可包括多于两个的读取数据事务优先级级别带宽,其中,这些读取数据事务优先级带宽中的每一个被分配用于具有特定的读取数据事务优先级级别的读取数据事务的传送。
在实施例中,写入数据事务带宽包括高优先级写入数据事务带宽和低优先级写入数据事务带宽。在实施例中,写入数据事务带宽被分区为高优先级写入数据事务带宽和低优先级写入数据事务带宽。存储器通信量调度器106被配置成用于为高优先级写入数据事务的传送分配高优先级写入数据事务带宽,并且为低优先级写入数据事务的传送分配低优先级写入数据事务带宽。低优先级写入数据事务带宽典型地小于高优先级写入数据事务带宽。在实施例中,存储器通信量调度器106被配置成用于基于高优先级写入数据事务带宽和高优先级写入数据事务在存储器通信量调度器106处被接收所按照的次序来调度高优先级写入数据事务的传送,并且用于基于低优先级写入数据事务带宽和低优先级写入数据事务在存储器通信量调度器106处被接收所按照的次序来调度低优先级写入数据事务的传送。
在实施例中,写入数据事务带宽的被规定为高优先级写入数据事务带宽的部分和写入数据事务带宽的被规定为低优先级写入数据事务带宽的部分由用户来限定。在实施例中,写入数据事务带宽的被规定为高优先级写入数据事务带宽的部分、写入数据事务带宽的被规定为低优先级写入数据事务带宽的部分基于写入数据事务中作为高优先级写入数据事务的部分和写入数据事务中作为低优先级写入数据事务的部分来动态地调整。在替代实施例中,写入数据事务带宽可包括多于两个的写入数据事务优先级级别带宽,其中,这些写入数据事务优先级带宽中的每一个被分配用于具有特定的写入数据事务优先级级别的写入数据事务的传送。
在从存储器通信量调度器106接收到存储器请求时,存储器控制器110从存储器112检取存储器请求中所请求的数据。
参考图2,示出存储器通信量调度器106的实施例的框图表示。存储器通信量调度器106包括通信地耦合至调度器存储器202的调度器200。存储器通信量调度器106可包括促进该存储器通信量调度器106的操作的附加组件。调度器200对存储器访问请求到存储器控制器110的传送进行调度。存储器访问请求包括读取数据事务、写入数据事务和元数据请求。在实施例中,元数据请求包括高优先级元数据请求和低优先级元数据请求。在替代实施例中,元数据请求可包括与附加的元数据优先级级别相关联的元数据请求。
在实施例中,调度器存储器202包括多个存储器访问请求队列。在实施例中,调度器存储器202处的存储器访问请求队列包括读取数据事务队列204、写入数据事务队列206、高优先级元数据请求队列208、和低优先级元数据请求队列210。在实施例中,读取数据事务队列204、写入数据事务队列206、高优先级元数据请求队列208、和低优先级元数据请求队列210是先入先出(FIFO)队列。在替代实施例中,调度器存储器202可包括附加的元数据请求队列,其中这些元数据请求队列中的每一个与具有附加的元数据优先级级别的元数据请求相关联。
在从核102接收到读取数据事务时,调度器200被配置成用于将该读取数据事务置于读取数据事务队列204中。在从核102接收到写入数据事务时,调度器200被配置成用于将该写入数据事务置于写入数据事务队列206中。如果调度器200确定存在与接收到的数据事务相关联的元数据并且该元数据不可在元数据高速缓存108中获得,则调度器200被配置成用于确定与数据事务相关联的元数据是高优先级元数据还是低优先级元数据。当确定元数据是高优先级元数据时,调度器200被配置成用于生成针对高优先级元数据的高优先级元数据请求,并将该高优先级元数据请求置于高优先级元数据请求队列208中。当确定元数据是低优先级元数据时,调度器200被配置成用于生成针对低优先级元数据的低优先级元数据请求,并将该低优先级元数据请求置于低优先级元数据请求队列210中。
调度器200基于读取数据事务带宽和读取数据事务在读取数据事务队列204中的位置来调度各个读取数据事务的传送。调度器200基于写入数据事务带宽和写入数据事务在写入数据事务队列206中的位置来调度各个写入数据事务的传送。调度器200基于高优先级元数据带宽和高优先级元数据请求在高优先级元数据请求队列208中的位置来调度各个高优先级元数据请求的传送。调度器200基于低优先级元数据带宽和低优先级元数据请求在低优先级元数据请求队列210中的位置来调度各个低优先级元数据请求的传送。低优先级元数据带宽典型地低于高优先级元数据带宽。
在实施例中,调度器200被配置成用于在存储器访问请求从相关联的存储器访问请求队列被拉取时将其传送至存储器控制器110。在实施例中,调度器存储器202包括元数据事务调度队列212。调度器202被配置成用于在存储器访问请求被调度时将所调度的存储器访问请求置于元数据事务调度队列212中。
在实施例中,调度器存储器可包括两个或更多个高优先级子级别元数据队列、以及两个或多个低优先级子级别元数据队列。高优先级元数据请求中的每一个可与高优先级子级别相关联,并且低优先级元数据请求中的每一个可与低优先级子级别相关联。与特定高优先级子级别相关联的高优先级元数据请求被置于与同一特定高优先级子级别相关联的高优先级子级别元数据队列中。类似地,与特定低优先级子级别相关联的低优先级元数据请求被置于与同一特定低优先级子级别相关联的低优先级子级别元数据队列中。
在实施例中,调度器存储器可包括高优先级读取数据事务队列和低优先级读取数据事务队列。在从核接收到读取数据事务时,调度器被配置成用于确定该读取数据事务是高优先级读取数据事务还是低优先级读取数据事务。在确定读取数据事务是高优先级读取数据事务时,调度器被配置成用于将高优先级读取数据事务置于高优先级读取数据事务队列中。在确定读取数据事务是低优先级读取数据事务时,调度器被配置成用于将低优先级读取数据事务置于低优先级读取数据事务队列中。
在实施例中,调度器存储器可包括高优先级写入数据事务队列和低优先级写入数据事务队列。在从核接收到写入数据事务时,调度器被配置成用于确定该写入数据事务是高优先级写入数据事务还是低优先级写入数据事务。在确定写入数据事务是高优先级写入数据事务时,调度器被配置成用于将高优先级写入数据事务置于高优先级写入数据事务队列中。在确定写入数据事务是低优先级写入数据事务时,调度器被配置成用于将低优先级写入数据事务置于低优先级写入数据事务队列中。
参考图3,示出将数据事务从核102传送至存储器通信量调度器106的方法300的实施例的流程图表示。方法300在核102生成数据事务时被执行。方法300可由核102与系统100的附加组件组合来执行。方法300可由硬件电路系统、固件、软件和/或其组合来执行。
在302处,核102生成数据事务。在304处,核102确定在数据高速缓存104中是否存在与数据事务相关联的数据。如果核102确定在数据高速缓存104中存在与数据事务相关联的数据,则在306处,核102从数据高速缓存104检取该数据。如果核102确定在数据高速缓存104中不存在与数据事务相关联的数据,则在308处,核102将该数据事务传送至存储器通信量调度器106。应理解,方法300在图3中以高级别示出,并且方法300的许多变型和替代方案是可能的。
参考图4,示出将存储器访问请求置于存储器访问请求队列中的方法400的实施例的流程图表示。方法400在存储器通信量调度器106从核102检取数据事务时被执行。方法400可由存储器通信量调度器106与系统100的附加组件组合来执行。方法400可由硬件电路系统、固件、软件和/或其组合来执行。
在402处,存储器通信量调度器106检取数据事务。在404处,存储器通信量调度器106确定数据事务是否为读取数据事务。如果存储器通信量调度器106确定数据事务并非读取数据事务,则存储器通信量调度器106确定该数据事务是写入数据事务,并在406处将该写入数据事务置于写入数据事务队列中。如果存储器通信量调度器106确定数据事务是读取数据事务,则在408处将该读取数据事务置于读取数据事务队列204中。
在410处,存储器通信量调度器106确定在元数据高速缓存108中是否存在与数据事务相关联的元数据。在实施例中,存储器通信量调度器106仅在数据事务是读取数据事务的情况下才确定在元数据高速缓存108中是否存在与数据事务相关联的元数据。在实施例中,存储器通信量调度器106仅在数据事务是写入数据事务的情况下才确定在元数据高速缓存108中是否存在与数据事务相关联的元数据。在实施例中,存储器通信量调度器106针对读取数据事务并针对写入数据事务确定在元数据高速缓存108中是否存在与数据事务相关联的元数据。
如果存储器通信量调度器106确定在元数据高速缓存108中存在与数据事务相关联的元数据,则在412处,存储器通信量调度器106从元数据高速缓存108检取该元数据。如果存储器通信量调度器106确定在元数据高速缓存108中不存在与数据事务相关联的元数据,则在414处,存储器通信量调度器106生成针对该元数据的元数据请求。
在416处,存储器通信量调度器106标识元数据请求的元数据优先级级别。在实施例中,数据事务包括数据事务优先级标签。数据事务优先级标签限定数据事务的数据事务优先级级别。在实施例中,数据事务优先级级别包括高数据事务优先级级别和低数据事务优先级级别。在替代实施例中,数据事务优先级级别可包括附加的数据事务优先级级别。元数据请求的元数据优先级级别继承自相关联的数据事务的数据事务优先级级别。在416处,存储器通信量调度器106将元数据请求的元数据优先级级别标识为与数据事务相关联的的数据事务优先级级别。
在实施例中,元数据事务包括与生成数据事务的核102相关联的核标识符。每个核102被配置成用于生成具有特定的数据事务优先级级别的数据事务。核102的核标识符与特定的数据事务优先级级别相关联。在实施例中,数据事务优先级级别包括高数据事务优先级级别和低数据事务优先级级别。在替代实施例中,数据事务优先级级别可包括附加的数据事务优先级级别。元数据请求的元数据优先级级别继承自相关联的数据事务的数据事务优先级级别。存储器通信量调度器106基于数据事务中的核标识符来标识数据事务的数据事务优先级级别。在416处,存储器通信量调度器106将元数据请求的元数据优先级级别标识为与数据事务相关联的数据事务优先级。
在418处,存储器通信量调度器106将元数据请求置于与该元数据请求的所标识的元数据优先级级别相关联的元数据请求队列中。如果存储器通信量调度器106将元数据请求的元数据优先级级别标识为高元数据优先级级别,则元数据请求是高优先级元数据请求,并且存储器通信量调度器106将该高优先级元数据请求置于高优先级元数据请求队列208中。如果存储器通信量调度器106将元数据请求的元数据优先级级别标识为低元数据优先级级别,则元数据请求是低优先级元数据请求,并且存储器通信量调度器106将该低优先级元数据请求置于低优先级元数据请求队列210中。
应理解,方法400在图4中以高级别示出,并且方法400的许多变型和替代方案是可能的。
参考图5,示出对存储器访问请求到存储器控制器110的传送进行调度的方法500的实施例的流程图表示。方法500在存储器通信量调度器106对存储器访问请求到存储器控制器110的传送进行调度时由存储器通信量调度器106执行。存储器访问请求包括读取数据事务、写入数据事务和元数据请求。方法500可由存储器通信量调度器106与系统100的附加组件组合来执行。方法500可由硬件电路系统、固件、软件和/或其组合来执行。
在502处,存储器通信量调度器106调度来自写入数据事务队列206的写入数据事务的传送。存储器通信量调度器106被配置成用于通过对存储器访问请求带宽进行分区将存储器访问请求传送至存储器控制器110。存储器请求访问带宽包括读取数据事务带宽、写入数据事务带宽、以及元数据带宽。存储器通信量调度器106被配置成用于为写入数据事务的传送分配写入数据事务带宽。在实施例中,写入数据事务带宽是存储器访问请求带宽的三分之一。存储器通信量调度器106基于写入数据事务带宽和写入数据事务在写入数据事务队列206中的位置来调度写入数据事务的传送。在实施例中,写入数据事务队列206是FIFO队列。将FIFO队列用作写入数据事务队列206使得存储器通信量调度器106能够按写入数据事务在存储器通信量调度器106处被接收的次序来调度写入数据事务的传送。
在504处,存储器通信量调度器106调度来自读取数据事务队列204的读取数据事务的传送。存储器通信量调度器106被配置成用于为读取数据事务的传送分配读取数据事务带宽。在实施例中,读取数据事务带宽是存储器访问请求带宽的三分之一。存储器通信量调度器106基于读取数据事务带宽和读取数据事务在读取数据事务队列204中的位置来调度读取数据事务的传送。在实施例中,读取数据事务队列204是FIFO队列。将FIFO队列用作读取数据事务队列204使得存储器通信量调度器106能够按读取数据事务在存储器通信量调度器106处被接收的次序来调度读取数据事务的传送。
在506处,存储器通信量调度器106确定来自高优先级元数据请求队列208的被调度的元数据请求的连续数量是否等于低优先级元数据权重。在实施例中,低优先级元数据请求被指派低优先级元数据权重。在实施例中,低优先级元数据权重由用户提供。低优先级元数据权重限定在对低优先级元数据请求到存储器控制器110的传送进行调度之前存储器通信量106调度用于传送至存储器控制器110的高优先级元数据请求的连续数量。
如果存储器通信量调度器106确定来自高优先级元数据请求队列208的被调度的元数据请求的连续数量不等于低优先级元数据权重,则在508处,存储器通信量调度器106调度来自高优先级元数据请求队列208的高优先级元数据请求的传送。存储器通信量调度器106被配置成用于为元数据请求的传送分配元数据带宽。元数据带宽包括高优先级元数据带宽和低优先级元数据带宽。低优先级元数据权重将元数据带宽的部分的分配限定为高优先级元数据带宽,并将元数据带宽的部分的分配限定为低优先级元数据带宽。存储器通信量调度器106被配置成用于为高优先级元数据请求的传送分配高优先级元数据带宽。存储器通信量调度器106基于如由低优先级元数据权重所限定的高优先级元数据带宽、以及高优先级元数据请求在高优先级元数据请求队列208中的位置来调度高优先级元数据请求的传送。在实施例中,高优先级元数据请求队列208是FIFO队列。将FIFO队列用作高优先级元数据请求队列208使得存储器通信量调度器106能够按高优先级元数据请求在存储器通信量调度器106处被生成的次序来调度高优先级元数据请求的传送。
方法500随后返回至502处,在502处,存储器通信量调度器106调度来自写入数据事务队列206的下一写入数据事务的传送,由此实现轮循方案。轮循方案涉及对写入数据事务、随后是读取数据事务、随后是元数据请求的传送的调度。尽管已描述调度写入数据事务、读取数据事务和元数据请求的传送的特定次序,但替代实施例可按不同的次序来调度写入数据事务、读取数据事务和元数据请求的传送。
如果存储器通信量调度器106确定来自高优先级元数据请求队列208的被调度的元数据请求的连续数量等于低优先级元数据权重,则存储器通信量调度器106调度来自低优先级元数据请求队列210的低优先级元数据请求的传送。如上文所描述,低优先级元数据权重将元数据带宽的部分的分配限定为高优先级元数据带宽,并将元数据带宽的部分的分配限定为低优先级元数据带宽。存储器通信量调度器106被配置成用于为低优先级元数据请求的传送分配低优先级元数据带宽。存储器通信量调度器106基于如由低优先级元数据权重所限定的低优先级元数据带宽、以及低优先级元数据请求在低优先级元数据请求队列210中的位置来调度低优先级元数据请求的传送。在实施例中,低优先级元数据请求队列210是FIFO队列。将FIFO队列用作低优先级元数据请求队列210使得存储器通信量调度器106能够按低优先级元数据请求在存储器通信量调度器106处被生成的次序来调度低优先级元数据请求的传送。方法500随后返回至502处,在502处,存储器通信量调度器106调度写入数据事务队列206中下一写入数据事务的传送。
应理解,方法500在图5中以高级别示出,并且方法500的许多变型和替代方案是可能的。
参考图6,示出了包括经加权的元数据请求的存储器事务调度队列212的实施例的示例600。存储器通信量调度器106被配置成用于在每个个体存储器访问请求被调度时将所调度的存储器访问请求置于元数据事务调度队列212中。存储器访问请求包括写入数据事务W、读取数据事务R、高优先级元数据请求MH、以及低优先级元数据请求ML。每个周期1-18表示存储器访问请求传送周期。存储器访问请求带宽被划分为三个相等的带宽。这三个相等的带宽是写入数据事务带宽、读取数据事务带宽和元数据带宽。
存储器通信量调度器106基于写入数据事务带宽和写入数据事务W在写入数据事务队列206中的位置来调度各个写入数据事务W的传送,并且基于读取数据事务带宽和读取数据事务R在读取数据事务队列204中的位置来调度各个读取数据事务R的传送。存储器通信量调度器106调度写入数据事务W,随后是读取数据事务R,随后是元数据请求MH/ML,并且根据存储器访问请求带宽的划分和轮循方案来重复该序列。
在所图示的示例中,低优先级元数据权重具有值2。元数据带宽根据低优先级元数据权重的值被划分为高优先级元数据带宽和低优先级元数据带宽。由于低优先级元数据权重具有值2,因此存储器通信量调度器106根据元数据带宽的划分调度来自高优先级元数据请求队列208的两个连续的高优先级元数据请求MH、随后调度来自低优先级元数据请求队列210的低优先级元数据请求ML,并且重复该元数据请求调度序列。
存储器通信量调度器106基于高优先级元数据带宽和高优先级元数据请求MH在高优先级元数据请求队列208中的位置来调度各个高优先级元数据请求ML的传送,并且基于低优先级元数据带宽和低优先级元数据请求ML在低优先级元数据请求队列210中的位置来调度各个低优先级元数据请求ML的传送。
参考图7,示出了包括经加权的元数据请求的存储器事务调度队列212的实施例的示例700。存储器通信量调度器106被配置成用于在每个个体存储器访问请求被调度时将所调度的存储器访问请求置于元数据事务调度队列212中。存储器访问请求包括写入数据事务W、读取数据事务R、高优先级元数据请求MH、以及低优先级元数据请求ML。每个周期1-18表示存储器访问请求传送周期。存储器访问请求带宽被划分为三个相等的带宽。这三个相等的带宽是写入数据事务带宽、读取数据事务带宽和元数据带宽。
存储器通信量调度器106基于写入数据事务带宽和写入数据事务W在写入数据事务队列206中的位置来调度各个写入数据事务W的传送,并且基于读取数据事务带宽和读取数据事务R在读取数据事务队列204中的位置来调度各个读取数据事务R的传送。存储器通信量调度器106调度写入数据事务W,随后是读取数据事务R,随后是元数据请求MH/ML,并且根据存储器访问请求带宽的划分和轮循方案来重复该序列。
在所图示的示例中,低优先级元数据权重具有值4。元数据带宽根据低优先级元数据权重的值被划分为高优先级元数据带宽和低优先级元数据带宽。由于低优先级元数据权重具有值4,因此存储器通信量调度器106根据元数据带宽的划分调度来自高优先级元数据请求队列208的四个连续的高优先级元数据请求MH、随后调度来自低优先级元数据请求队列210的低优先级元数据请求ML,并且重复该元数据请求调度序列。
存储器通信量调度器106基于高优先级元数据带宽和高优先级元数据请求MH在高优先级元数据请求队列208中的位置来调度各个高优先级元数据请求MH的传送,并且基于低优先级元数据带宽和低优先级元数据请求ML在低优先级元数据请求队列210中的位置来调度各个低优先级元数据请求ML的传送。
在替代实施例中,元数据带宽与元数据请求传送周期时段相关联。存储器通信量调度器106用于为低优先级元数据请求的传送分配元数据请求传送周期时段的第一部分,并且为高优先级元数据请求的传送分配元数据请求传送周期时段的第二部分。以规律的间隔对来自低优先级元数据请求队列的请求进行调度达固定的持续时间可防止低优先级工作负荷的饥饿。
参考图8,示出管理数据事务从核102到存储器通信量调度器106的传送的方法800的实施例的流程图表示。方法800由存储器通信量调度器106执行,以使用基于信用的反馈系统来管理数据事务从核102到存储器通信量调度器106的传送。方法800可由存储器通信量调度器106与系统100的附加组件组合来执行。方法800可由硬件电路系统、固件、软件和/或其组合来执行。
在实施例中,多个核102中的一个核102负责生成与低优先级元数据请求相关联的数据事务。在802处,存储器通信量调度器106确定在低优先级元数据请求数据队列210处可用的空间量。在804处,存储器通信量调度器106标识多个核102中负责生成与具有低元数据优先级级别的元数据请求相关联的数据事务的一个核102。在806处,存储器通信量调度器106将与在低优先级元数据请求队列210处可用的空间量相关联的信用数量传送至所标识的核102。核102使用从存储器通信量调度器106接收到的信用数量来确定该核102被许可向存储器通信量调度器106传送的数据事务的数量。存储器通信量调度器106周期性地执行方法800,以周期性地向核102提供经更新的信用数量。应理解,方法800在图8中以高级别示出,并且方法800的许多变型和替代方案是可能的。
参考图9,示出了动态地调整用于高优先级元数据请求的传送和低优先级元数据请求的传送的元数据带宽的分配的方法900的实施例的流程图表示。方法900由存储器通信量调度器106执行,以动态地调整元数据带宽到高优先级元数据带宽和低优先级元数据带宽的划分。方法900可由存储器通信量调度器106与系统100的附加组件组合来执行。方法900可由硬件电路系统、固件、软件和/或其组合来执行。
在902处,存储器通信量调度器106确定高优先级元数据请求队列208中的高优先级元数据请求的数量是否已经落到低于带宽调整阈值。当高优先级元数据请求队列208中的高优先级元数据请求的数量落到低于带宽调整阈值时,存储器通信量调度器106可能无法高效地利用元数据带宽来进行元数据请求的传送。
如果存储器通信调度器106确定高优先级元数据请求队列208中的高优先级元数据请求的数量已经落到低于带宽调整阈值,则在904处,存储器通信量调度器106增加元数据带宽的被规定为低优先级元数据带宽的部分,同时减少元数据带宽的被规定为高优先级元数据带宽的部分。这可使得存储器通信量调度器106能够高效地利用元数据带宽以将元数据请求传送至存储器控制器110。
如果存储器通信量调度器106确定高优先级元数据请求队列208中的高优先级元数据请求的数量尚未落到低于带宽调整阈值,则在906处,存储器通信量调度器106维持元数据带宽到高优先级元数据带宽和低优先级元数据带宽的当前划分。存储器通信量调度器106周期性地执行方法900,以动态地调整元数据带宽到高优先级元数据带宽和低优先级元数据带宽的分配。应理解,方法900在图9中以高级别示出,并且方法900的许多变型和替代方案是可能的。
参考图10,示出管理数据事务从核102到存储器通信量调度器106的传送的方法1000的实施例的流程图表示。方法1000由存储器通信量调度器106执行,以管理数据事务从核102到存储器通信量调度器106的传送。方法1000可由存储器通信量调度器106与系统100的附加组件组合来执行。方法1000可由硬件电路系统、固件、软件和/或其组合来执行。
在实施例中,多个核102中的一个核102负责生成与低优先级元数据请求相关联的数据事务。在1002处,存储器通信量调度器106确定在存储器通信量调度器106处生成的低优先级元数据请求的数量是否大于核扼制阈值。如果存储器通信量调度器106确定在存储器通信量调度器106处生成的低优先级元数据请求的数量大于核扼制阈值,则在1004处,存储器通信量调度器106标识多个核102中负责生成与具有低元数据优先级级别的元数据请求相关联的数据事务的一个核102。
在1006处,存储器通信量调度器106向所标识的核102传送核扼制请求。在接收到核扼制请求时,核102对该核102向存储器通信量调度器106传送的数据事务的数量往回扼制,由此减少在存储器通信量调度器106处生成的低优先级元数据请求的数量。
如果存储器通信量调度器106确定在存储器通信量调度器106处生成的低优先级元数据请求的数量不大于核扼制阈值,则在1008处不采取进一步的动作。存储器通信量调度器106周期性地执行方法1000。应理解,方法1000在图10中以高级别示出,并且方法1000的许多变型和替代方案是可能的。
参考图11,示出将元数据请求调度至存储器控制器110的方法1100的实施例的流程图表示。方法1100由存储器通信量调度器106执行,以管理元数据请求从存储器通信量调度器106到存储器控制器110的传送。方法1100可由存储器通信量调度器106与系统100的附加组件组合来执行。方法1100可由硬件电路系统、固件、软件和/或其组合来执行。
如上文所描述,元数据带宽根据低优先级元数据权重的值被划分为高优先级元数据带宽和低优先级元数据带宽。例如,如果低优先级元数据权重具有值X,则存储器通信量调度器106调度来自高优先级元数据请求队列208的X个连续的高优先级元数据请求、随后调度来自低优先级元数据请求队列210的低优先级元数据请求,并且重复该元数据请求调度序列。如果高优先级元数据请求队列208为空,则存储器通信量调度器106可能无法在X个连续的高优先级元数据请求时隙中的一个高优先级元数据请求时隙中调度高优先级元数据请求,并且该高优先级元数据请求时隙将是未使用的。类似地,如果低优先级元数据请求队列210为空,则存储器通信量调度器106可能无法在X个连续的高优先级元数据请求时隙之后的低优先级元数据请求时隙中的一个低优先级元数据请求时隙中调度低优先级元数据请求,并且该低优先级元数据请求时隙将是未使用的。方法1100寻求在高优先级元数据队列208请求队列为空或低优先级元数据队列210请求队列为空时对空的元数据请求时隙进行填充。
在1102处,存储器通信量调度器106确定高优先级元数据请求队列208或低优先级元数据请求队列210中的一者是否为空。如果存储器通信量调度器106确定高优先级元数据请求队列208或低优先级元数据请求队列210中的一者为空,则在1104处,存储器通信量调度器106使用可用的元数据请求时隙调度来自高优先级元数据请求队列208或低优先级元数据请求队列210中的另一者的元数据请求的传送。如果存储器通信量调度器106确定高优先级元数据请求队列208或低优先级元数据请求队列210中的一者不为空,则在1106处,存储器通信量调度器106根据低元数据优先级权重维持元数据请求的传送。应理解,方法1100在图11中以高级别示出,并且方法1100的许多变型和替代方案是可能的。
服务质量(QoS)方案的实现方式可确保给定核/线程上行为不当的工作负荷不负面地影响共同驻留在平台上的其他工作负荷的性能,该QoS方案用于基于对用于高优先级元数据请求的传送的高优先级元数据带宽和用于低优先级元数据请求的传送的低优先级元数据带宽的分配来管理高优先级元数据请求和低优先级元数据请求的传送。QoS方案可依赖于基于与元数据请求相关联的服务类别、通过限制可用于元数据查找的存储器带宽来限制分配到元数据高速缓存中的比率。与元数据请求相关联的QoS对应于与元数据请求相关联的元数据优先级级别。
为了实现针对元数据高速缓存的QoS,系统100可依赖于基于加权的元数据优先级调度方案处置与元数据请求相对应的存储器通信量。元数据请求继承其父数据事务的QoS服务参数,并且基于其优先级而不是仅基于先入先出方式被调度。这间接地控制低优先级线程可以分配到(即,填充)元数据高速缓存中的条目所按照的比率,并且由此对较高优先级线程的改善的性能作出贡献。
存储器通信量调度器106基于父读取/写入数据事务的QoS来维护单独的元数据请求队列。这可确保来自高优先级工作负荷的元数据请求优先于来自低优先级工作负荷的那些元数据请求。
在替代实施例中,可以使用漏桶实现方式通过计及通信量猝发及其优先级而在元数据请求队列(或者甚至所有队列)之间准确地对可用带宽进行分区。在另一实施例中,存储器通信量调度器106可向每个服务类别分配固定分率的可用元数据带宽。在替代实施例中,存储器通信量调度器106还可对于读取数据事务和写入数据事务针对每一QoS类别维护单独的队列。
图12A是图示根据本发明的实施例的示例性有序流水线和示例性的寄存器重命名的乱序发布/执行流水线两者的框图。图12B是图示根据本发明的各实施例的要包括在处理器中的有序架构核的示例性实施例和示例性的寄存器重命名的乱序发布/执行架构核的框图。图12A-图12B中的实线框图示有序流水线和有序核,而虚线框的任选添加图示寄存器重命名的、乱序发布/执行流水线和核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图12A中,处理器流水线1200包括取出级1202、长度解码级1204、解码级1206、分配级1208、重命名级1210、调度(也被称为分派或发布)级1212、寄存器读取/存储器读取级1214、执行级1216、写回/存储器写入级1218、异常处置级1222和提交级1224。注意,如本文中所描述,在给定实施例中,核可包括诸如流水线1200之类的多条处理流水线。
图12B示出处理器核1290,该处理器核1290包括前端单元1230,该前端单元1230耦合到执行引擎单元1250,并且前端单元1230和执行引擎单元1250两者都耦合到存储器单元1270。核1290可以是精简指令集计算(RISC)核、复杂指令集计算(CISC)核、超长指令字(VLIW)核、或混合或替代的核类型。作为又一选项,核1290可以是专用核,诸如例如,网络或通信核、压缩引擎、协处理器核、通用计算图形处理单元(GPGPU)核、图形核,等等。
前端单元1230包括分支预测单元1232,该分支预测单元1232耦合到指令高速缓存单元1234,该指令高速缓存单元1234耦合到指令转换后备缓冲器(TLB)1236,该指令转换后备缓冲器1236耦合到指令取出单元1238,该指令取出单元1238耦合到解码单元1240。解码单元1240(或解码器)可对指令解码,并且生成从原始指令解码出的、或以其他方式反映原始指令的、或从原始指令导出的一个或多个微操作、微代码进入点、微指令、其他指令、或其他控制信号作为输出。解码单元1240可使用各种不同的机制来实现。合适机制的示例包括但不限于,查找表、硬件实现方式、可编程逻辑阵列(PLA)、微代码只读存储器(ROM)等。在一个实施例中,核1290包括存储用于某些宏指令的微代码的微代码ROM或其他介质(例如,在解码单元1240中,或以其他方式在前端单元1230内)。解码单元1240耦合到执行引擎单元1250中的重命名/分配器单元1252。
执行引擎单元1250包括重命名/分配器单元1252,该重命名/分配器单元1252耦合到引退单元1254和一个或多个调度器单元的集合1256。(多个)调度器单元1256表示任何数量的不同调度器,包括预留站、中央指令窗等。(多个)调度器单元1256耦合到(多个)物理寄存器堆单元1258。(多个)物理寄存器堆单元1258中的每一个物理寄存器堆单元表示一个或多个物理寄存器堆,其中不同的物理寄存器堆存储一种或多种不同的数据类型,诸如,标量整数、标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一条指令的地址的指令指针)等等。在一个实施例中,(多个)物理寄存器堆单元1258包括向量寄存器单元、写掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构向量寄存器、向量掩码寄存器和通用寄存器。(多个)物理寄存器堆单元1258由引退单元1254重叠,以图示可实现寄存器重命名和乱序执行的各种方式(例如,使用(多个)重排序缓冲器和(多个)引退寄存器堆;使用(多个)未来文件、(多个)历史缓冲器、和(多个)引退寄存器堆;使用寄存器映射和寄存器池,等等)。引退单元1254和(多个)物理寄存器堆单元1258耦合到(多个)执行集群1260。(多个)执行集群1260包括一个或多个执行单元的集合1262以及一个或多个存储器访问单元的集合1264。执行单元1262可执行各种操作(例如,移位、加法、减法、乘法)并可对各种数据类型(例如,标量浮点、紧缩整数、紧缩浮点、向量整数、向量浮点)执行。尽管一些实施例可以包括专用于特定功能或功能集合的多个执行单元,但是其他实施例可包括仅一个执行单元或全都执行所有功能的多个执行单元。(多个)调度器单元1256、(多个)物理寄存器堆单元1258和(多个)执行集群1260示出为可能有多个,因为某些实施例为某些类型的数据/操作创建分开的流水线(例如,标量整数流水线、标量浮点/紧缩整数/紧缩浮点/向量整数/向量浮点流水线,和/或各自具有其自身的调度器单元、(多个)物理寄存器堆单元和/或执行集群的存储器访问流水线——并且在分开的存储器访问流水线的情况下,实现其中仅该流水线的执行集群具有(多个)存储器访问单元1264的某些实施例)。还应当理解,在使用分开的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,并且其余流水线可以是有序的。
存储器访问单元的集合1264耦合到存储器单元1270,该存储器单元1270包括数据TLB单元1272,该数据TLB单元1272耦合到数据高速缓存单元1274,该数据高速缓存单元1274耦合到第二级(L2)高速缓存单元1276。在一个示例性实施例中,存储器访问单元1264可包括加载单元、存储地址单元和存储数据单元,其中的每一个均耦合至存储器单元1270中的数据TLB单元1272。指令高速缓存单元1234还耦合到存储器单元1270中的第2级(L2)高速缓存单元1276。L2高速缓存单元1276耦合到一个或多个其他级别的高速缓存,并最终耦合到主存储器。
作为示例,示例性寄存器重命名的、乱序发布/执行核架构可如下所述地实现流水线1200:1)指令取出1238执行取出级1202和长度解码级1204;2)解码单元1240执行解码级1206;3)重命名/分配器单元1252执行分配级1208和重命名级1210;4)(多个)调度器单元1256执行调度级1212;5)(多个)物理寄存器堆单元1258和存储器单元1270执行寄存器读取/存储器读取级1214;执行集群1260执行执行级1216;6)存储器单元1270和(多个)物理寄存器堆单元1258执行写回/存储器写入级1218;7)各单元可涉及异常处置级1222;以及8)引退单元1254和(多个)物理寄存器堆单元1258执行提交级1224。
核1290可支持一个或多个指令集(例如,x86指令集(具有已与较新版本一起添加的一些扩展);加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集;加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集(具有诸如NEON的任选的附加扩展)),其中包括本文中描述的(多条)指令。在一个实施例中,核1290包括用于支持紧缩数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用紧缩数据来执行由许多多媒体应用使用的操作。
应当理解,核可支持多线程化(执行两个或更多个并行的操作或线程的集合),并且可以按各种方式来完成该多线程化,各种方式包括时分多线程化、同时多线程化(其中单个物理核为物理核正在同时多线程化的线程中的每一个线程提供逻辑核)、或其组合(例如,时分取出和解码以及此后的诸如超线程化技术中的同时多线程化)。
尽管在乱序执行的上下文中描述了寄存器重命名,但应当理解,可以在有序架构中使用寄存器重命名。尽管处理器的所图示的实施例还包括分开的指令和数据高速缓存单元1234/1274以及共享的L2高速缓存单元1276,但是替代实施例可以具有用于指令和数据两者的单个内部高速缓存,诸如例如,第一级(L1)内部高速缓存或多个级别的内部高速缓存。在一些实施例中,该系统可包括内部高速缓存和在核和/或处理器外部的外部高速缓存的组合。或者,所有高速缓存都可以在核和/或处理器的外部。
图13是根据本发明的实施例的可具有多于一个的核、可具有集成存储器控制器、以及可具有集成图形器件的处理器1300的框图。图13中的实线框图示具有单个核1302A、系统代理1310、一个或多个总线控制器单元的集合1316的处理器1300,而虚线框的任选添加图示具有多个核1302A-N、系统代理单元1310中的一个或多个集成存储器控制器单元的集合以及专用逻辑1308的替代处理器1300。
由此,处理器1300的不同实现方式可包括:1)CPU,其中专用逻辑1308是集成图形器件和/或科学(吞吐量)逻辑(其可包括一个或多个核),并且核1302A-N是一个或多个通用核(例如,通用有序核、通用乱序核、这两者的组合);2)协处理器,其中核1302A-N是旨在主要用于图形和/或科学(吞吐量)的大量专用核;以及3)协处理器,其中核1302A-N是大量通用有序核。因此,处理器1300可以是通用处理器、协处理器或专用处理器,诸如例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器1300可以是一个或多个基板的一部分,和/或可使用多种工艺技术(诸如例如,BiCMOS、CMOS、或NMOS)中的任何技术被实现在一个或多个基板上。
存储器层次结构包括核内的一个或多个级别的高速缓存单元1304A-N、一个或多个共享高速缓存单元的集合1306、以及耦合到集成存储器控制器单元的集合1314的外部存储器(未示出)。共享高速缓存单元的集合1306可包括一个或多个中间级别的高速缓存,诸如,第二级(L2)、第三级(L3)、第四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)和/或以上各项的组合。虽然在一个实施例中,基于环的互连单元1312将专用逻辑1308、共享高速缓存单元的集合1306、以及系统代理单元1310/(多个)集成存储器控制器单元1314互连,但是替代实施例可使用任何数量的公知技术来互连此类单元。在一个实施例中,在一个或多个高速缓存单元1306与核1302A-N之间维持一致性。
系统代理单元1310包括协调和操作核1302A-N的那些组件。系统代理单元1310可包括例如功率控制单元(PCU)和显示单元。PCU可以是对核1302A-N以及专用逻辑1308的功率状态进行调节所需的逻辑和组件,或者可包括这些逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1302A-N在架构指令集方面可以是同构的或异构的;即,核1302A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图14-图15是示例性计算机架构的框图。本领域中已知的对膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备的其他系统设计和配置也是合适的。一般地,能够包含如本文中所公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般都是合适的。
现在参考图14,所示出的是根据本发明的实施例的第一更具体的示例性系统1400的框图。如图14中所示,多处理器系统1400是点对点互连系统,并且包括经由点对点互连1450耦合的第一处理器1470和第二处理器1480。处理器1470和1480中的每一个都可以是处理器1400的某一版本。
处理器1470和1480示出为分别包括集成存储器控制器(IMC)单元1472和1482。处理器1470还包括作为其总线控制器单元的一部分的点对点(P-P)接口1476和1478;类似地,第二处理器1480包括P-P接口1486和1488。处理器1470、1480可以经由使用点对点(P-P)接口电路1478、1488的P-P接口1450来交换信息。如图14中所示,IMC 1472和1482将处理器耦合到相应的存储器,即存储器1432和存储器1434,这些存储器可以是本地附连到相应处理器的主存储器的部分。
处理器1470、1480可各自经由使用点对点接口电路1476、1494、1486、1498的各个P-P接口1452、1454来与芯片组1490交换信息。芯片组1490可以任选地经由高性能接口1439来与协处理器1438交换信息。在一个实施例中,协处理器1438是专用处理器,诸如例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享高速缓存(未示出)可被包括在任一处理器中,或在这两个处理器的外部但经由P-P互连与这些处理器连接,使得如果处理器被置于低功率模式,则任一个或这两个处理器的本地高速缓存信息可被存储在共享高速缓存中。
芯片组1490可以经由接口1496耦合到第一总线1416。在一个实施例中,第一总线1416可以是外围部件互连(PCI)总线或诸如PCI快速总线或另一第三代I/O互连总线之类的总线,但是本发明的范围不限于此。
如图14中所示,各种I/O设备1414可连同总线桥1418一起耦合到第一总线1416,该总线桥1418将第一总线1416耦合到第二总线1420。在一个实施例中,诸如协处理器、高吞吐量MIC处理器、GPGPU、加速器(诸如例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或任何其他处理器之类的一个或多个附加处理器1415耦合到第一总线1416。在一个实施例中,第二总线1420可以是低引脚数(LPC)总线。在一个实施例中,各种设备可耦合到第二总线1420,这些设备包括例如键盘和/或鼠标1422、通信设备1427以及存储单元1428,该存储单元1428诸如可包括指令/代码和数据1430的盘驱动器或者其他大容量存储设备。此外,音频I/O 1424可耦合到第二总线1420。注意,其他架构是可能的。例如,代替图14的点对点架构,系统可以实现多分支总线或其他此类架构。
现在参考图15,所示出的是根据本发明的实施例的SoC 1500的框图。虚线框是更先进的SoC上的任选的特征。在图15中,(多个)互连单元1502耦合至:应用处理器1510,其包括一个或多个核的集合1502A-N(包括构成的高速缓存单元1504A-N)以及(多个)共享高速缓存单元1506;系统代理单元1510;(多个)总线控制器单元1516;(多个)集成存储器控制器单元1514;一组或一个或多个协处理器1520,其可包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机存取存储器(SRAM)单元1530;直接存储器访问(DMA)单元1532;以及显示单元1540,用于耦合至一个或多个外部显示器。在一个实施例中,(多个)协处理器1520包括专用处理器,诸如例如,网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或此类实现方式的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码(诸如,图14中图示的代码1430)应用于输入指令,以执行本文中描述的功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有处理器的任何系统,该处理器诸如例如,数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
程序代码可以用高级的面向过程的编程语言或面向对象的编程语言来实现,以便与处理系统通信。如果需要,也可用汇编语言或机器语言来实现程序代码。事实上,本文中描述的机制不限于任何特定的编程语言的范围。在任何情况下,该语言可以是编译语言或解释语言。
至少一个实施例的一个或多个方面可以由存储在机器可读介质上的表示性指令来实现,该指令表示处理器中的各种逻辑,该指令在被机器读取时使得该机器制造用于执行本文中所述的技术的逻辑。被称为“IP核”的此类表示可以被存储在有形的机器可读介质上,并可被供应给各个客户或生产设施以加载到实际制造该逻辑或处理器的制造机器中。
此类机器可读存储介质可以包括但不限于通过机器或设备制造或形成的制品的非瞬态、有形布置,其包括存储介质,诸如硬盘;任何其他类型的盘,包括软盘、光盘、紧致盘只读存储器(CD-ROM)、紧凑盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)和静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);相变存储器(PCM);磁卡或光卡;或适于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非瞬态的有形机器可读介质,该介质包含指令或包含设计数据,诸如硬件描述语言(HDL),它定义本文中描述的结构、电路、装置、处理器和/或系统特征。这些实施例也可被称为程序产品。
在一些情况下,指令转换器可用于将指令从源指令集转换至目标指令集。例如,指令转换器可以将指令变换(例如,使用静态二进制变换、包括动态编译的动态二进制变换)、变形、仿真或以其他方式转换成要由核处理的一条或多条其他指令。指令转换器可以用软件、硬件、固件、或其组合来实现。指令转换器可以在处理器上、在处理器外、或者部分在处理器上且部分在处理器外。
图16是根据本发明的实施例的对照使用软件指令转换器将源指令集中的二进制指令转换成目标指令集中的二进制指令的框图。在所图示的实施例中,指令转换器是软件指令转换器,但替代地,该指令转换器可以用软件、固件、硬件或其各种组合来实现。图16示出可使用x86编译器1604来编译高级语言1602形式的程序,以生成可由具有至少一个x86指令集核的处理器1616原生执行的x86二进制代码1606。具有至少一个x86指令集核的处理器1616表示通过兼容地执行或以其他方式执行以下各项来执行与具有至少一个x86指令集核英特尔处理器基本相同的功能的任何处理器:1)英特尔x86指令集核的指令集的本质部分,或2)目标为在具有至少一个x86指令集核的英特尔处理器上运行以便取得与具有至少一个x86指令集核的英特尔处理器基本相同的结果的应用或其他软件的目标代码版本。x86编译器1604表示可操作用于生成x86二进制代码1606(例如,目标代码)的编译器,该二进制代码可通过或不通过附加的链接处理在具有至少一个x86指令集核的处理器1616上执行。类似地,图16示出可以使用替代的指令集编译器1608来编译高级语言1602形式的程序,以生成可以由不具有至少一个x86指令集核的处理器1614(例如,具有执行加利福尼亚州桑尼维尔市的MIPS技术公司的MIPS指令集、和/或执行加利福尼亚州桑尼维尔市的ARM控股公司的ARM指令集的核的处理器)原生执行的替代的指令集二进制代码1610。指令转换器1612用于将x86二进制代码1606转换成可以由不具有x86指令集核的处理器1614原生执行的代码。该转换后的代码不大可能与替代的指令集二进制代码1610相同,因为能够这样做的指令转换器难以制造;然而,转换后的代码将完成一般操作,并且由来自替代指令集的指令构成。因此,指令转换器1612通过仿真、模拟或任何其他过程来表示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或其组合。
以下示例涉及进一步的实施例。
在一个示例中,一种装置包括:存储器,用于存储多个元数据请求,该多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联;以及调度器,耦合至存储器并耦合至存储器控制器,该调度器用于至少部分地基于与多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度第一元数据请求到存储器控制器的传送,第一带宽部分与第一元数据优先级级别相关联。
在示例中,调度器用于:接收与第一数据事务优先级级别相关联的第一数据事务,以供传送至存储器控制器;确定与第一数据事务相关联的元数据在元数据高速缓存处是否可获得;以及基于该确定,生成与元数据相关联的、具有继承自第一数据事务优先级级别的第一元数据优先级级别的第一元数据请求。
在示例中,调度器用于:接收第一数据事务,该第一数据事务包括与第一数据事务优先级级别相关联的数据事务优先级标签;以及生成第一元数据优先级级别,以供与对同第一数据事务相关联的元数据的第一元数据请求相关联,第一元数据优先级级别用于继承自第一数据事务优先级级别。
在示例中,调度器用于:从多个核中的第一核接收第一数据事务,该第一核与第一核优先级级别相关联;以及生成第一元数据优先级级别,以供与对同第一数据事务相关联的元数据的第一元数据请求相关联,第一元数据优先级级别用于继承自第一核优先级级别。
在示例中,存储器进一步包括多个元数据请求队列,该多个元数据请求队列中的每个元数据请求队列与多个元数据优先级级别中的一个元数据优先级级别相关联,并且调度器进一步用于:生成与第一元数据优先级级别相关联的第一元数据请求;将第一元数据请求置于与第一元数据优先级级别相关联的第一元数据请求队列中;以及至少部分地基于第一元数据请求在第一元数据请求队列中的位置来调度第一元数据请求到存储器控制器的传送。
在示例中,调度器用于:标识多个核中负责生成与具有第一元数据优先级级别的元数据请求相关联的数据事务的第一核;生成与元数据带宽的第一带宽部分相关联的带宽可用性数据;以及将带宽可用性数据传送至第一核,以使得该第一核能够基于带宽可用性数据来管理被传送至装置的数据事务的数量。
在示例中,调度器用于:将多个元数据请求中与第一元数据优先级级别相关联的元数据请求的数量与带宽调整阈值进行比较;以及基于该比较来动态地调整元数据带宽的第一带宽部分。
在示例中,调度器用于:确定多个元数据请求中与第一元数据优先级级别相关联的元数据请求的数量是否超出核扼制阈值,第一元数据优先级级别是低优先级级别;以及标识多个核中负责生成与具有第一元数据优先级级别的元数据请求相关联的数据事务的第一核,并且基于该确定向第一核传送数据事务扼制请求。
在示例中,多个元数据优先级级别中的每个元数据优先级级别与元数据优先级级别权重相关联,并且调度器进一步用于:至少部分地基于与第一元数据优先级级别相关联的第一元数据优先级级别权重,将元数据带宽的第一带宽部分分配给与第一元数据优先级级别相关联的元数据请求。
在示例中,存储器包括至少两个元数据请求队列,该至少两个元数据请求队列中的每个元数据请求队列与多个元数据优先级级别中的一个元数据优先级级别相关联,并且调度器进一步用于:生成与第一元数据优先级级别相关联的第一元数据请求;将第一元数据请求置于与第一元数据优先级级别相关联的第一元数据请求队列中;以及至少部分地基于第一元数据请求在第一元数据请求队列中的位置来调度该第一元数据请求到存储器控制器的传送。
在示例中,调度器用于:确定多个元数据请求是否包括与第一元数据优先级级别相关联的另一元数据请求;以及基于该确定、使用元数据带宽的第一带宽部分来调度多个元数据请求中的第二元数据请求到存储器控制器的传送,该第二元数据请求具有多个元数据优先级级别中的第二元数据优先级级别。
在示例中,调度器用于:至少部分地基于与多个元数据请求中的第二元数据请求相关联的第二元数据优先级级别和元数据带宽的第二带宽部分来调度第二元数据请求到存储器控制器的传送;第二带宽部分被分配用于与第二元数据优先级级别相关联的元数据请求的传送,至少部分地基于第一元数据优先级级别低于第二元数据优先级级别,元数据带宽的第一带宽部分小于元数据带宽的第二带宽部分。
在一个示例中,一种机器可读介质,包括存储于其上的指令,这些指令如果被机器执行则使得该机器:在存储器通信量调度器处接收多个数据事务,该多个数据事务中的每个数据事务与事务接收时间和数据事务优先级级别相关联;在存储器通信量调度器处生成多个元数据请求,该多个元数据请求中的每个元数据请求与多个数据事务中的一个数据事务、以及多个元数据优先级级别中的元数据优先级级别相关联,该多个元数据优先级级别中的元数据优先级级别继承自多个数据事务中的一个数据事务的数据事务优先级级别;以及至少部分地基于与多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度第一元数据请求到存储器控制器的传送,第一带宽部分与第一元数据优先级级别相关联。
在示例中,机器可读介质包括用于使机器进行以下操作的指令:至少部分地基于与多个元数据请求中与第二数据事务相关联的第二元数据请求相关联的第二元数据优先级级别、与第二数据事务相关联的第二接收时间、以及元数据带宽的被分配用于与第二元数据优先级级别相关联的元数据请求的传送的第二带宽部分,调度第二元数据请求到存储器控制器的传送,至少部分地基于第一元数据优先级级别低于第二元数据优先级级别,元数据带宽的第一带宽部分小于元数据带宽的第二带宽部分。
在示例中,机器可读介质包括用于使机器进行以下操作的指令:使多个元数据优先级级别中的每个元数据优先级级别与元数据优先级级别权重相关联;以及至少部分地基于与第一元数据优先级级别相关联的第一元数据优先级级别权重,向与第一元数据优先级级别相关联的元数据请求分配元数据带宽的第一带宽部分。
在一个示例中,一种系统包括:多个核;存储器控制器;元数据高速缓存;以及存储器通信量调度器,耦合至多个核、存储器控制器、以及元数据高速缓存。存储器通信量调度器用于:存储多个元数据请求,该多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联;以及至少部分地基于与多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度第一元数据请求到存储器控制器的传送,第一带宽部分与第一元数据优先级级别相关联。
在示例中,存储器通信量调度器用于:存储多个读取数据事务,该多个读取数据事务中的每个读取数据事务与多个读取数据事务优先级级别中的一个读取数据事务优先级级别相关联;以及至少部分地基于与多个读取数据事务中的第一读取数据事务相关联的第一读取数据事务优先级级别、以及被分配用于读取数据事务到存储器控制器的传送的读取数据事务带宽的第一带宽部分来调度第一读取数据事务到存储器控制器的传送,被分配用于读取数据事务的传送的读取数据事务带宽的第一带宽部分与第一读取数据事务优先级级别相关联。
在示例中,存储器通信量调度器用于:存储多个写入数据事务,该多个写入数据事务中的每个写入数据事务与多个写入数据事务优先级级别中的一个写入数据事务优先级级别相关联;以及至少部分地基于与多个写入数据事务中的第一写入数据事务相关联的第一写入数据事务优先级级别、以及被分配用于写入数据事务到存储器控制器的传送的写入数据事务带宽的第一带宽部分来调度第一写入数据事务到存储器控制器的传送,被分配用于写入数据事务的传送的写入数据事务带宽的第一带宽部分与第一写入数据事务优先级级别相关联。
在示例中,存储器通信量调度器包括至少两个元数据请求队列,该至少两个元数据请求队列中的每个元数据请求队列与多个元数据优先级级别中的一个元数据优先级级别相关联,并且存储器通信量调度器用于:生成与第一元数据优先级级别相关联的第一元数据请求;将第一元数据请求置于与第一元数据优先级级别相关联的第一元数据请求队列中;以及至少部分地基于第一元数据请求在第一元数据请求队列中的位置来调度该第一元数据请求到存储器控制器的传送。
在示例中,存储器通信量调度器包括读取数据事务队列和写入数据事务队列,并且存储器通信量调度器进一步用于:至少部分地基于第一读取数据事务在读取数据事务队列中的位置和读取数据事务带宽来调度该第一读取数据事务从读取数据事务队列到存储器控制器的传送;以及至少部分地基于第一写入数据事务在写入数据事务队列中的位置和写入数据事务带宽来调度该第一写入数据事务从写入数据事务队列到存储器控制器的传送。
注意,术语“电路”和“电路系统”在本文中可互换地使用。如本文中所使用,这些术语以及术语“逻辑”用来单独地或以任何组合指代模拟电路系统、数字电路系统、硬连线电路系统、可编程电路系统、处理器电路系统、微控制器电路系统、硬件逻辑电路系统、状态机电路系统和/或任何其他类型的物理硬件组件。实施例可在许多不同类型的系统中使用。例如,在一个实施例中,可以将通信设备布置为用于执行本文中所描述的各种方法和技术。当然,本发明的范围不限于通信设备,并且相反,其他实施例可以涉及用于处理指令的其他类型的装置、或者一种或多种机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文中所描述的方法与技术中的一者或多者。
实施例可被实现在代码中,并且可被存储在非瞬态存储介质上,该非瞬态存储介质具有存储于其上的指令,这些指令可以被用于将系统编程为用于执行这些指令。实施例还可被实现在数据中,并且可被存储在非瞬态存储介质上,该非瞬态存储介质如果被至少一个机器使用则使得该至少一个机器制造至少一个集成电路以执行一个或多个操作。更进一步的实施例可以在包括信息的计算机可读存储介质中实现,该计算机可读存储介质当被制造在SoC或其他处理器中时将SoC或其他处理器配置为执行一个或多个操作。该存储介质可包括但不限于:任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)之类的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
尽管已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会众多修改和变型。所附权利要求旨在将所有此类修改和变型涵盖为落入本发明的真实精神与范围内。
Claims (25)
1.一种用于调度元数据请求的装置,包括:
存储器,用于存储多个元数据请求,所述多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联;以及
调度器,耦合至所述存储器并耦合至存储器控制器,所述调度器用于至少部分地基于与所述多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度所述第一元数据请求到所述存储器控制器的传送,所述第一带宽部分与所述第一元数据优先级级别相关联。
2.如权利要求1所述的装置,其中,所述调度器进一步用于:
接收与第一数据事务优先级级别相关联的第一数据事务,以供传送至所述存储器控制器;
确定与所述第一数据事务相关联的元数据在元数据高速缓存处是否能获得;以及
基于所述确定,生成与所述元数据相关联的、具有继承自所述第一数据事务优先级级别的第一元数据优先级级别的所述第一元数据请求。
3.如权利要求1所述的装置,其中,所述调度器进一步用于:
接收第一数据事务,所述第一数据事务包括与第一数据事务优先级级别相关联的数据事务优先级标签;以及
生成所述第一元数据优先级级别,以供与对同所述第一数据事务相关联的元数据的所述第一元数据请求相关联,所述第一元数据优先级级别用于继承自所述第一数据事务优先级级别。
4.如权利要求1所述的装置,其中,所述调度器进一步用于:
从多个核中的第一核接收第一数据事务,所述第一核与第一核优先级级别相关联;以及
生成所述第一元数据优先级级别,以供与对同所述第一数据事务相关联的元数据的所述第一元数据请求相关联,所述第一元数据优先级级别用于继承自所述第一核优先级级别。
5.如权利要求1所述的装置,其中,所述存储器进一步包括多个元数据请求队列,所述多个元数据请求队列中的每个元数据请求队列与所述多个元数据优先级级别中的一个元数据优先级级别相关联,并且所述调度器进一步用于:
生成与所述第一元数据优先级级别相关联的所述第一元数据请求;
将所述第一元数据请求置于与所述第一元数据优先级级别相关联的第一元数据请求队列中;以及
至少部分地基于所述第一元数据请求在所述第一元数据请求队列中的位置来调度所述第一元数据请求到所述存储器控制器的传送。
6.如权利要求1所述的装置,其中,所述调度器进一步用于:
标识多个核中负责生成与具有所述第一元数据优先级级别的元数据请求相关联的数据事务的第一核;
生成与所述元数据带宽的所述第一带宽部分相关联的带宽可用性数据;以及
将所述带宽可用性数据传送至所述第一核,以使得所述第一核能够基于所述带宽可用性数据来管理被传送至所述装置的数据事务的数量。
7.如权利要求1所述的装置,其中,所述调度器进一步用于:
将所述多个元数据请求中与所述第一元数据优先级级别相关联的元数据请求的数量与带宽调整阈值进行比较;以及
基于所述比较来动态地调整所述元数据带宽的所述第一带宽部分。
8.如权利要求1所述的装置,其中,所述调度器进一步用于:
确定所述多个元数据请求中与所述第一元数据优先级级别相关联的元数据请求的数量是否超出核扼制阈值,所述第一元数据优先级级别是低优先级级别;以及
标识多个核中负责生成与具有所述第一元数据优先级级别的元数据请求相关联的数据事务的第一核,并且基于所述确定向所述第一核传送数据事务扼制请求。
9.如权利要求1所述的装置,其中,所述多个元数据优先级级别中的每个元数据优先级级别与元数据优先级级别权重相关联,并且所述调度器进一步用于:至少部分地基于与所述第一元数据优先级级别相关联的第一元数据优先级级别权重,将所述元数据带宽的所述第一带宽部分分配给与所述第一元数据优先级级别相关联的元数据请求。
10.如权利要求1所述的装置,其中,所述存储器包括至少两个元数据请求队列,所述至少两个元数据请求队列中的每个元数据请求队列与所述多个元数据优先级级别中的一个元数据优先级级别相关联,并且所述调度器进一步用于:
生成与所述第一元数据优先级级别相关联的所述第一元数据请求;
将所述第一元数据请求置于与所述第一元数据优先级级别相关联的第一元数据请求队列中;以及
至少部分地基于所述第一元数据请求在所述第一元数据请求队列中的位置来调度所述第一元数据请求到所述存储器控制器的传送。
11.如权利要求1所述的装置,其中,所述调度器进一步用于:
确定所述多个元数据请求是否包括与所述第一元数据优先级级别相关联的另一元数据请求;以及
基于所述确定、使用所述元数据带宽的所述第一带宽部分来调度所述多个元数据请求中的第二元数据请求到所述存储器控制器的传送,所述第二元数据请求具有所述多个元数据优先级级别中的第二元数据优先级级别。
12.如权利要求1-11中任一项所述的装置,其中,所述调度器进一步用于:
至少部分地基于与所述多个元数据请求中的第二元数据请求相关联的第二元数据优先级级别和所述元数据带宽的第二带宽部分来调度所述第二元数据请求到所述存储器控制器的传送,所述第二带宽部分被分配用于与所述第二元数据优先级级别相关联的元数据请求的传送,至少部分地基于所述第一元数据优先级级别低于所述第二元数据优先级级别,所述元数据带宽的所述第一带宽部分小于所述元数据带宽的所述第二带宽部分。
13.一种用于调度的方法,包括:
在存储器通信量调度器处接收多个数据事务,所述多个数据事务中的每个数据事务与事务接收时间和数据事务优先级级别相关联;
在所述存储器通信量调度器处生成多个元数据请求,所述多个元数据请求中的每个元数据请求与所述多个数据事务中的一个数据事务、以及多个元数据优先级级别中的元数据优先级级别相关联,所述多个元数据优先级级别中的元数据优先级级别继承自所述多个数据事务中的所述一个数据事务的数据事务优先级级别;以及
至少部分地基于与所述多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度所述第一元数据请求到存储器控制器的传送,所述第一带宽部分与所述第一元数据优先级级别相关联。
14.如权利要求13所述的方法,进一步包括:至少部分地基于与所述多个元数据请求中与第二数据事务相关联的第二元数据请求相关联的第二元数据优先级级别、与所述第二数据事务相关联的第二接收时间、以及所述元数据带宽的被分配用于与所述第二元数据优先级级别相关联的元数据请求的传送的第二带宽部分,调度所述第二元数据请求到所述存储器控制器的传送,至少部分地基于所述第一元数据优先级级别低于所述第二元数据优先级级别,所述元数据带宽的所述第一带宽部分小于所述元数据带宽的所述第二带宽部分。
15.如权利要求13所述的方法,进一步包括:
使所述多个元数据优先级级别中的每个元数据优先级级别与元数据优先级级别权重相关联;以及
至少部分地基于与所述第一元数据优先级级别相关联的第一元数据优先级级别权重,向与所述第一元数据优先级级别相关联的元数据请求分配所述元数据带宽的所述第一带宽部分。
16.一种计算机程序产品,包括指令,所述指令当由处理器执行时,使所述处理器执行如权利要求13-15中任一项所述的方法。
17.一种用于调度的系统,包括:
多个核;
存储器控制器;
元数据高速缓存;以及
存储器通信量调度器,耦合至所述多个核、所述存储器控制器、以及所述元数据高速缓存,所述存储器通信量调度器用于:
存储多个元数据请求,所述多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联;以及
至少部分地基于与所述多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、以及元数据带宽的第一带宽部分来调度所述第一元数据请求到所述存储器控制器的传送,所述第一带宽部分与所述第一元数据优先级级别相关联。
18.如权利要求17所述的系统,其中,所述存储器通信量调度器进一步用于:
存储多个读取数据事务,所述多个读取数据事务中的每个读取数据事务与多个读取数据事务优先级级别中的一个读取数据事务优先级级别相关联;以及
至少部分地基于与所述多个读取数据事务中的第一读取数据事务相关联的第一读取数据事务优先级级别、以及被分配用于读取数据事务到所述存储器控制器的传送的读取数据事务带宽的第一带宽部分来调度所述第一读取数据事务到所述存储器控制器的传送,被分配用于读取数据事务的传送的所述读取数据事务带宽的第一带宽部分与所述第一读取数据事务优先级级别相关联。
19.如权利要求17所述的系统,其中,所述存储器通信量调度器进一步用于:
存储多个写入数据事务,所述多个写入数据事务中的每个写入数据事务与多个写入数据事务优先级级别中的一个写入数据事务优先级级别相关联;以及
至少部分地基于与所述多个写入数据事务中的第一写入数据事务相关联的第一写入数据事务优先级级别、以及被分配用于写入数据事务到所述存储器控制器的传送的写入数据事务带宽的第一带宽部分来调度所述第一写入数据事务到所述存储器控制器的传送,被分配用于写入数据事务的传送的所述写入数据事务带宽的第一带宽部分与所述第一写入数据事务优先级级别相关联。
20.如权利要求17所述的系统,其中,所述存储器通信量调度器包括至少两个元数据请求队列,所述至少两个元数据请求队列中的每个元数据请求队列与所述多个元数据优先级级别中的一个元数据优先级级别相关联,并且所述存储器通信量调度器进一步用于:
生成与所述第一元数据优先级级别相关联的所述第一元数据请求;
将所述第一元数据请求置于与所述第一元数据优先级级别相关联的第一元数据请求队列中;以及
至少部分地基于所述第一元数据请求在所述第一元数据请求队列中的位置来调度所述第一元数据请求到所述存储器控制器的传送。
21.如权利要求20所述的系统,其中,所述存储器通信量调度器包括读取数据事务队列和写入数据事务队列,并且所述存储器通信量调度器进一步用于:
至少部分地基于第一读取数据事务在所述读取数据事务队列中的位置和读取数据事务带宽来调度所述第一读取数据事务从所述读取数据事务队列到所述存储器控制器的传送;以及
至少部分地基于第一写入数据事务在所述写入数据事务队列中的位置和写入数据事务带宽来调度所述第一写入数据事务从所述写入数据事务队列到所述存储器控制器的传送。
22.一种用于调度元数据请求的设备,包括:
用于存储多个元数据请求的存储器装置,所述多个元数据请求中的每个元数据请求与多个元数据优先级级别中的一个元数据优先级级别相关联;以及
调度器装置,耦合至所述存储器装置并耦合至存储器控制器装置,所述调度器装置用于至少部分地基于与所述多个元数据请求中的第一元数据请求相关联的第一元数据优先级级别、和元数据带宽的第一带宽部分来调度所述第一元数据请求到所述存储器控制器装置的传送,所述第一带宽部分与所述第一元数据优先级级别相关联。
23.如权利要求22所述的设备,其中,所述调度器装置进一步用于:
接收与第一数据事务优先级级别相关联的第一数据事务,以供传送至所述存储器控制器装置;
确定与所述第一数据事务相关联的元数据在元数据高速缓存装置处是否能获得;以及
基于所述确定,生成与所述元数据相关联的、具有继承自所述第一数据事务优先级级别的第一元数据优先级级别的所述第一元数据请求。
24.如权利要求22所述的设备,其中,所述调度器装置进一步用于:
接收第一数据事务,所述第一数据事务包括与第一数据事务优先级级别相关联的数据事务优先级标签;以及
生成所述第一元数据优先级级别,以供与对同所述第一数据事务相关联的元数据的所述第一元数据请求相关联,所述第一元数据优先级级别用于继承自所述第一数据事务优先级级别。
25.如权利要求22-24中任一项所述的设备,其中,所述调度器装置进一步用于:
从多个核中的第一核接收第一数据事务,所述第一核与第一核优先级相关联;以及
生成所述第一元数据优先级级别,以供与对同所述第一数据事务相关联的元数据的所述第一元数据请求相关联,所述第一元数据优先级级别用于继承自所述第一核优先级级别。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/213,700 US20220308791A1 (en) | 2021-03-26 | 2021-03-26 | System, apparatus, and method for scheduling metadata requests |
US17/213,700 | 2021-03-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115129442A true CN115129442A (zh) | 2022-09-30 |
Family
ID=80780941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210182074.6A Pending CN115129442A (zh) | 2021-03-26 | 2022-02-25 | 用于调度元数据请求的系统、装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20220308791A1 (zh) |
EP (1) | EP4064062A1 (zh) |
JP (1) | JP2022151572A (zh) |
CN (1) | CN115129442A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115562562A (zh) * | 2021-07-01 | 2023-01-03 | 伊姆西Ip控股有限责任公司 | 基于客户端/服务器架构管理计算系统的方法、设备和程序产品 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8819687B2 (en) * | 2010-05-07 | 2014-08-26 | Advanced Micro Devices, Inc. | Scheduling for multiple memory controllers |
-
2021
- 2021-03-26 US US17/213,700 patent/US20220308791A1/en active Pending
- 2021-12-27 JP JP2021212346A patent/JP2022151572A/ja active Pending
-
2022
- 2022-02-22 EP EP22158063.2A patent/EP4064062A1/en active Pending
- 2022-02-25 CN CN202210182074.6A patent/CN115129442A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4064062A1 (en) | 2022-09-28 |
US20220308791A1 (en) | 2022-09-29 |
JP2022151572A (ja) | 2022-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929323B2 (en) | Multi-core communication acceleration using hardware queue device | |
US10452551B2 (en) | Programmable memory prefetcher for prefetching multiple cache lines based on data in a prefetch engine control register | |
US11243775B2 (en) | System, apparatus and method for program order queue (POQ) to manage data dependencies in processor having multiple instruction queues | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
US11650947B2 (en) | Highly scalable accelerator | |
US10031847B2 (en) | System and method for replacement in associative memories using weighted PLRU trees | |
US11531562B2 (en) | Systems, methods, and apparatuses for resource monitoring | |
US11106599B2 (en) | System and method for replacement in associative memories using weighted PLRU trees | |
US11960404B2 (en) | Method and apparatus for reducing the latency of long latency memory requests | |
EP4064062A1 (en) | System, apparatus, and method for scheduling metadata requests | |
WO2019067141A1 (en) | INTER-CLUSTER COMMUNICATION OF LIVE REGISTER VALUES | |
US9983880B2 (en) | Method and apparatus for improved thread selection | |
EP4020229A1 (en) | System, apparatus and method for prefetching physical pages in a processor | |
US11886910B2 (en) | Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware | |
EP3757772A1 (en) | System, apparatus and method for a hybrid reservation station for a processor | |
US10223121B2 (en) | Method and apparatus for supporting quasi-posted loads | |
US20230409197A1 (en) | Pasid granularity resource control for iommu | |
CN113849263A (zh) | 用于启用对工作提交的细粒度的服务质量或速率控制的系统、装置和方法 | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |
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 |