CN104102761A - 数据处理系统中数据处理的方法和集成电路 - Google Patents
数据处理系统中数据处理的方法和集成电路 Download PDFInfo
- Publication number
- CN104102761A CN104102761A CN201410143989.1A CN201410143989A CN104102761A CN 104102761 A CN104102761 A CN 104102761A CN 201410143989 A CN201410143989 A CN 201410143989A CN 104102761 A CN104102761 A CN 104102761A
- Authority
- CN
- China
- Prior art keywords
- request
- unified
- entry
- queue
- entries
- 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
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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/405—Coupling between buses using bus bridges where the bridge performs a synchronising function
- G06F13/4059—Coupling between buses using bus bridges where the bridge performs a synchronising function where the synchronisation uses buffers, e.g. for speed matching between buses
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
-
- 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/0038—System on Chip
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及数据处理系统中数据处理的方法和集成电路。统一请求队列包括用于为多种类型的请求服务的多个条目。统一请求队列条目中的每一个条目一般都可分配给多种请求类型中任意一种类型的请求。在统一请求队列中为多种类型请求中的第一种请求类型预留多个条目。基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
Description
技术领域
本发明一般涉及数据处理,具体地涉及在统一请求队列中通过为队列条目实现动态预留来确保请求种类之间的公平。
背景技术
传统的多处理器数据处理系统包括由易失性存储器层次支持的多个处理器核,其中易失性存储器层次在它的高层包括一个或多个高速缓存存储器层次并且在它的低层包括一个或多个系统存储器。每个系统存储器传统地都是由相关联的存储器控制器控制并且访问的,其中存储器控制器经由系统总线参与同高速缓存层次的相干通信。
传统的存储器控制器设计采用或者统一请求队列或者分叉请求队列,所述统一请求队列缓冲在相同队列结构的条目中散布的读和写请求,所述分叉请求队列在分开的队列结构中缓冲读和写请求。传统的统一请求队列根据先来先得(FCFS)的原则把队列条目分配给存储器访问请求,因此使得最多所有的队列条目都被只分配给读请求或者只分配给写请求。相对于同等深度的分叉设计,该灵活性在条目分配中为给定类型的请求提供了增强的能力,使得存储器控制器能够用较少的重试甚至不需要重试来处理读或写突发的时间段。FCFS条目分配的一个缺点是:随着时间的推移,读或写请求可能不会得到对统一请求队列条目的数字上的公平使用。在某些以前的设计中,该公平性问题通过在统一请求队列中为读请求静态地预留预定数量的条目并且在统一请求队列中为写请求静态地预留预定数量的条目来解决;但是,静态预留条目否定了统一请求队列所期望的灵活性。
关于统一请求队列条目分配的公平性问题不限于给各种类型存储器访问请求的条目分配数量上简单的数字上的平等。源自于以下的事实会出现其它的公平性问题,即统一请求队列条目中读和写请求的生命期会有很大的不同,同样由不同类型的请求消耗的数据带宽也会有很大的不同。这些额外的问题会导致在统一请求队列的利用上更不平衡。
发明内容
在至少一个实施例中,统一请求队列包括用于为多种类型的请求服务的多个条目。统一请求队列中的每一个条目一般都可分配给多种请求类型中任意一种类型的请求。在统一请求队列中为多种类型请求中的第一种请求类型预留多个条目。基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
附图说明
图1是根据一种实施例的示例性数据处理系统的高层框图;
图2是根据一种实施例的图1存储器通道接口(MCI)的更详细的视图;
图3是根据一种实施例的图1存储器缓冲器(MB)的更详细的视图;
图4是根据一种实施例的图2MCI的控制逻辑的更详细的视图;
图5是根据一种实施例在统一请求队列中动态确定预留的示例性方法的高层逻辑流程图;
图6是根据一种实施例在统一请求队列中分配条目的示例性方法的高层逻辑流程图;以及
图7是示例性设计过程的数据流程图。
具体实施例
现在参考附图并且尤其参考图1,图1说明了示例性数据处理系统100的高层框图,该示例性数据处理系统是根据本文所公开原理和技术的数据处理系统的许多可能的实施例中的一个。数据处理系统100可以用例如一台IBM Power服务器实现,IBM Power服务器是纽约Armonk的国际商业机器公司的产品线。
在所绘实施例中,数据处理系统100包括至少一个系统级芯片(SOC)102,以及如由省略符号所指示的,可能包括通过集成在SOC102中的系统架构130耦合的多个SOC102。每个SOC优选地实现为具有如本领域已知的构成半导体电路系统的衬底的单一集成电路芯片。每个SOC102包括多个独立处理指令和数据的处理器核104。在某些实施例中,处理器核104还支持其中多个独立线程并发执行的同时多线程。每个处理器核104包括指令序列单元(ISU)106,其用于获取指令、排序用于执行的指令、以及通过把执行结果提交给处理器核104的结构化状态来完成指令。ISU106通过参考全局完成表(GCT)完成指令。
每个处理器核104还包括用于执行指令的一个或多个执行单元,其中指令是诸如像定点和浮点运算指令、逻辑指令以及对数据处理系统100连续地址空间中目标存储器块分别请求读和写访问的加载类型和存储类型指令。尤其,执行单元包括执行加载类型和存储类型指令来计算读和写存储器访问操作的目标地址的加载存储单元(LSU)108。LSU108包括可以满足读存储器访问操作的存储-通过(store-through)一级(L1)高速缓存110,以及跟踪在L1高速缓存110中丢失的读存储器访问操作的加载丢失队列(LMQ)112。
每个处理器核104的操作都通过多级分层处理器子系统支持,其中存储器子系统在它的最底层具有由数据处理系统100中SOC102的任意一个中的处理器核104的任意一个通常可以访问的一个或多个共享系统存储器140(例如,大容量DRAM),并且在它的最高层具有一级或多级高速缓存存储器。如所绘的,SOC102包括一个或多个(并且优选地多个)存储器通道接口(MCI)132,它们中的每一个都支持响应从相同SOC102或其它SOC102中的处理器核104经由系统架构130接收到的存储器访问操作而对系统存储器140的相关联集合的读和写访问。在所绘实施例中,每个MCI132都经由外部存储器缓冲器(MB)134耦合到其相关联的系统存储器140集合。这样,MCI132和MB134的每一对就形成分布式存储器控制器。
在说明性实施例中,支持SOC102的每个处理器核104的高速缓存存储器层次包括以上所述的存储-通过一级(L1)高速缓存110以及私有的存储-在(store-in)二级(L2)高速缓存120。如示出的,L2高速缓存120包括L2阵列122以及L2控制器124,其中控制器包括控制逻辑和L2阵列122内容的目录126。L2控制器124响应从相关联的处理器核104接收到的存储器访问(和其它)请求而在系统构架130上初始化操作和/或访问L2阵列122。在一种实现基于监听的一致性协议的实施例中(除非另作说明,否则将如在下文假定的),L2控制器124在系统构架130上附加地检测操作,提供合适的一致性响应,并且执行监听操作所需要的对L2阵列122的任意访问。尽管说明的高速缓存层次只包括两级高速缓存,但是本领域技术人员将理解,备选的实施例可以包括其它私有或共享、芯片上或芯片外、内联或后备的高速缓存的层次(L3,L4等),所述层次可以完全包含、部分包含、或者不包含高速缓存较高层次的内容。
SOC102还包括支持经由一个或多个外部通信链路152与一个或多个I/O(输入/输出)控制器进行I/O通信的一个或多个集成I/O接口150,其中I/O控制器诸如是PCI主机桥(PHB)、InfiniBand控制器、FibreChannel控制器等。本领域技术人员将理解,数据处理系统100可以包括许多附加的或可替代的组件,由于它们对本文阐述的本发明的理解不是必需的,所以相应地没有在图1中进行说明或在此进一步讨论。
现在参考图2,其中绘出了根据本发明一个实施例的图1的一个存储器通道接口(MCI)132的更详细的视图。在所绘实施例中,MCI132经由下行(即,朝向系统存储器140)请求及数据接口202和204以及上行(即,朝向系统构架130)控制和数据接口206和208耦合到系统构架130。请求接口202从系统构架130接收各种操作的读和写存储器访问请求。如图2指示的,请求接口202上接收到的每个存储器访问请求包括例如指示操作的存储器访问请求是否有效的有效字段201、指示存储器访问请求事务类型(例如,读、写和/或可能的其它类型)的事务类型(TType)字段203、以及指定存储器访问请求的目标存储器块地址的请求地址字段205。数据接口204通过写存储器访问请求从系统构架130接收要写入到相关联的系统存储器140集合的数据。利用控制和数据接口206和208经由系统构架130把请求的数据返回到各种请求源(例如,处理器核104和I/O控制器150)。
MCI132包括响应从系统构架130接收到的存储器访问操作而控制对相关联的系统存储器140集合访问的控制逻辑200。响应在系统架构130上接收到存储器访问操作请求,控制逻辑200通过参考存储器访问请求的有效字段201和请求地址字段205确定存储器访问请求是否是有效的并且指定由所述MCI132控制的系统存储器140集合中的目标地址。如果不是,那么就丢弃该存储器访问请求。但是,如果控制逻辑200证实并且使存储器访问请求有资格发向与它相关联的系统存储器140中的一个以及在它的统一请求队列中有条目可用,那么控制逻辑200在它的统一请求队列中缓冲存储器访问请求(如参考图4-6更详细讨论的),并且随后如果有存储器访问请求及相关联的写数据的话,通过把它们从统一请求队列传输到帧格式化器210来为该存储器访问请求服务。
如果有存储器访问请求和写数据的话,帧格式化器210响应接收到它们来把存储器访问请求和写数据(如果有的话)格式化成一个或多个帧并且把所述帧经由下行存储器缓冲器接口212传输到耦合到SOC102的存储器缓冲器134。如将理解的,基于多种因素的实现之间帧格式会差别很大,其中所述因素包括实现下行存储器缓冲器接口212和相应的上行存储器缓冲器接口214可用的引脚数。
如图2进一步所示,MCI132附加地包括帧解码器220,其经由上行存储器缓冲器接口214从耦合到SOC102的存储器缓冲器134接收帧。帧解码器220把这种帧解码以便提取被上行传输的数据以及相关联的控制信息。循环冗余校验(CRC)检测器222在帧上附加地执行CRC(例如,奇偶校验或其它CRC处理)与由帧检测器220执行的处理并行来验证所述帧在从存储器缓冲器134的传输中没有被损坏。响应CRC检测器222发出帧没有被损坏的信号,帧检测器220转发从帧中提取的控制信息,诸如识别数据所属操作的数据标签以及指示数据是否包含错误的数据错误指示符。控制逻辑200接收由帧解码器220提取的控制信息并且经由上行控制接口206把控制信息转发到系统构架130。MCI132附加地包括用于由帧解码器220提取的上行数据的两条数据路径:(1)用于为目标存储器块的关键字和其它高优先级数据传输选择的快速路径226,和(2)包括用于缓冲低优先级数据的数据缓冲器224的缓冲数据路径。多路复用器228应用所选择的仲裁策略来从用于在系统构架130上传输的两条数据路径中的一条选择数据,但是为了最小化访问延迟,在不使缓冲数据路径饥饿(starving out)的情况下,优先地从快速路径226选择数据。
现在参考图3,其中说明了根据一个实施例的图1的存储器缓冲器134的更详细的视图。在说明的实施例中,存储器缓冲器134包括从MCI132经由下行存储器缓冲器接口212接收帧的帧解码器300。帧解码器300解码帧并且确定把每个存储器访问请求发给多个附加的系统存储器140中的哪一个。因此,在所绘例子中,其中附加的系统存储器140至少包括系统存储器140a和140b,帧解码器300确定存储器访问请求是否指定了给系统存储器140a或给系统存储器140b分配的目标地址,并且相应地把存储器访问请求转发给控制器302a或控制器302b用于提供服务。控制器302a和302b通过把适当的读或写访问发到系统存储器140a和140b中相关联的一个来为从控制器302a,302b接收的存储器访问请求提供服务。
存储器缓冲器134附加地包括用于每个所附连的系统存储器140a,140b的相应的读通道310a,310b。读通道310a,310b中每个都包括优选地对从系统存储器140a,140b中相关联的一个读取的所有数据执行检错和纠错处理的ECC校验电路312a,312b。读通道310a,310b中每一个还包括快速路径316a,316b,为了降低存储器访问延迟,利用快速路径从系统存储器140a,140b中相关联的一个读取的选择的数据区组(granule)也允许旁路ECC校验电路312a,312b。例如,在一个实施例中,其中采用四区组把存储器块从系统存储器140传送到处理器核104,四个数据区组中只有前三个允许投机性地旁路ECC校验电路312,而所有四个区组也总是通过ECC校验电路312路由,以便能够用最后的区组把指示存储器块是否包含错误的数据错误指示符方便地上行转发。然后,由于也通过ECC校验电路312路由的该四个数据区组的前三个已经经由快速路径316a,316b被转发,所以把它们丢弃。为了允许经由快速路径316a,316b传输的数据以最小延迟被转发,读通道310a,310b中每一个附加地包括数据缓冲器314a,314b,用于缓冲通过ECC校验电路312a,312b在需要时输出的较低优先级数据。每个读通道310a,310b中的多路复用器318a,318b应用所选择的仲裁策略来从数据缓冲器314a,314b和快速路径316a,316b中选择用于转发的数据。在不使缓冲数据路径饥饿的情况下,仲裁策略优选地从快速路径316a,316b中选择数据。
存储器缓冲器134的读通道310a,310b都耦合到由通道仲裁器322控制的多路复用器320的输入。通道仲裁器322应用期望的仲裁策略(例如,修改的轮询)来一般地提升读通道310a,310b之间的公平性,同时给快速路径数据的数据传输优先。由通道仲裁器322选择的每个数据传输都由帧格式化器330接收,其中帧格式化器把数据传输格式化为一个或多个帧并且在由CRC产生器332附加校验值之后经由上行存储器缓冲器接口214把那些帧传输到耦合到存储器缓冲器134的MCI132。
现在参考图4,其中绘出了根据一个实施例的图2的MCI132的控制逻辑200的更详细的视图。如示出的,控制逻辑200包括具有多个条目402a-402n的统一请求队列400,用于缓冲针对相关联的系统存储器140的读或写存储器访问请求。在所绘例子中,通常可分配给任意类型的存储器访问请求的每个条目402包括指示条目402有效性的有效字段404、指示存储器访问请求的事务类型(例如,读或写)的TType字段406、和指定存储器访问请求的目标存储器块的地址的请求地址字段408以及为写存储器访问请求而缓冲要写入系统存储器140的数据的数据字段410。
为了管理统一请求队列400中的条目402的预留和分配,控制逻辑200包括相关联的计数器420-432集合。具体而言,写重试计数器420计数由MCI132监听的、由于统一请求队列400中缺少可用队列条目402而给出重试响应的写存储器访问请求的数量。类似地,读重试计数器422计数由MCI132监听的、由于统一请求队列400中缺少可用队列条目402而给出重试响应的读存储器访问请求的数量。响应窗口重置计数器424到期(例如,溢出),以例如每1000-5000时钟周期一次的频率周期性地重置写重试计数器420和读重试计数器422。
在控制逻辑200中实现的计数器还包括写条目预留计数器426和读条目预留计数器428,它们分别指示统一请求队列400中为写请求和读请求预留了多少条目。在优选实施例中,控制逻辑200把写条目预留计数器426和读条目预留计数器428都初始化为0,其指示存储器访问队列400中任何空闲条目402都初始地可用于分配给任意类型的存储器访问请求。如下所述,基于对条目402的竞争,控制逻辑200周期性地并且动态地增加和/或减少为读和/或写请求预留的条目402的数量。在优选实施例中,写条目预留计数器426和读条目预留计数器428实现为饱和计数器,其中每一个计数器都分别在预定的最小值(例如,0)和预定的最大值时变得饱和,其中预定的最大值优选地小于统一请求队列400中条目402的总数。
控制逻辑200还包括写条目可用计数器430和读条目可用计数器432,分别指示统一请求队列400中可用于分配给写请求和读请求的条目402的数量。由控制逻辑200维护的写条目可用计数器430中的计数等于未使用条目402的数量减去为读请求预留的未使用条目402的数量(基于读条目预留计数器428的当前值)。类似地,由控制逻辑200维护的读条目可用计数器432中的计数等于未使用条目402的数量减去为写请求预留的未使用条目402的当前数量(基于写条目预留计数器426的值)。因此,写条目可用计数器430和读条目可用计数器432在统一请求队列400条目402的分配上递减,在统一请求队列条目402解除分配上递增(即,当存储器访问请求被转发到存储器缓冲器134用于服务时),并且随着为其它请求类型预留的条目的数量动态改变而递减或者递增。
现在参考图5,其中说明了根据一个实施例的在统一请求队列中动态确定预留的示例性方法的高层逻辑流程图。说明的方法可以通过例如MCI132的控制逻辑200实现来为统一请求队列400中的写请求和读请求确定预留的条目402,如通过写条目预留计数器426和读条目预留计数器428分别指示的。
图5的过程在块500开始,然后前进到块502,其说明MCI132的控制逻辑200等待窗口重置计数器424到期(例如,溢出)。响应窗口重置计数器424到期,过程前进到块504和514。在块504,控制逻辑200确定写重试计数器420的写重试计数是否满足(例如,大于)写重试阈值。响应没有满足写重试阈值的判定,控制逻辑200递减写条目预留计数器426(块506)。可代替的,响应满足写重试阈值的判定,控制逻辑200递增写条目预留计数器426(块508)。如上所述,在优选实施例中,写条目预留计数器426实现为饱和计数器,意味着其值在预定的最小值(例如,0)和预定的最大值时都饱和,其中预定的最大值优选地小于统一请求队列400中条目402的总数。在块506或块508之后,控制逻辑200更新读条目可用计数器432中指示的可用读条目的计数,如在块510所示出的。控制逻辑200附加地重置写重试计数器420,如在块512所示出的。
现在参考块514,控制逻辑200确定读重试计数器422的读重试计数是否满足(例如,大于)读重试阈值。响应没有满足读重试阈值的判定,控制逻辑200递减读条目预留计数器428(块516)。可代替的,响应满足读重试阈值的判定,控制逻辑200递增读条目预留计数器428(块518)。如上所述,在优选实施例中,读条目预留计数器428实现为饱和计数器,意味着其值在预定的最小值(例如,0)和预定的最大值时都饱和,其中预定的最大值优选地小于统一请求队列400中条目402的总数。在块516或块518之后,控制逻辑200更新在写条目可用计数器430中指示的可用写条目的计数,如在块520所示出的。控制逻辑200附加地重置读重试计数器422,如在块522所示出的。图5的过程从块512和522前进到块524并且终止。
现在参考图6,其中绘出了根据一个实施例的在统一请求队列中分配条目的示例性方法的高层逻辑流程图。图6的过程可以通过例如MCI132的控制逻辑200执行,以便在统一请求队列400中把条目402分配给监听的存储器访问请求。
图6的过程在块600开始并且前进到块602,其说明控制逻辑200经由系统构架130等待接收存储器访问请求。响应经由系统构架130监听存储器访问请求,控制逻辑200在块604确定所监听的存储器访问请求是否有效,并且由监听的存储器访问请求指定的请求地址205以位于由包括MCI132的分布式存储器控制器控制的系统存储器140中的一个位置为目标。控制逻辑200可以通过例如参考有效位204来确定存储器访问请求是否有效,并且能通过例如参考未说明的基地址寄存器设施或利用哈希函数来确定请求地址205是否以相关联的系统存储器140为目标。在块604响应确定所监听的存储器访问请求是无效的或者存储器访问请求的请求地址205不是以相关联的系统存储器140中的位置为目标,控制逻辑200丢弃存储器访问请求,如在块606所示出的。然后,图6的过程在块620结束。
回到块604,响应所监听的存储器请求是有效的并且所监听的存储器访问请求的请求地址205以相关联的系统存储器140中的位置为目标的判定,过程绕过块608。块608绘出了控制逻辑200,其中控制逻辑200通过例如参考写条目可用计数器430和读条目可用计数器432中相关的一个,确定统一请求队列400中是否有条目402可用于分配给所监听的事务类型的存储器访问请求。响应于控制逻辑200在块608确定在统一请求队列400中没有条目402可用于分配给所监听的存储器访问请求,控制逻辑200递增写重试计数器420和读重试计数器422中相关的一个,并且提供重试(Retry)一致性响应来邀请发出存储器访问请求的请求者在以后的时间尝试存储器访问请求(块610)。应当理解,即使在统一请求队列400中有可用的一个或多个未使用条目402,也提供该重试一致性响应,以防其中一个或多个未使用条目402被预留用于分配给其它请求类型的请求。在典型的情形中,如果请求者响应重试一致性响应而确实重试存储器访问请求,那么由于在统一请求队列400中缓冲的存储器访问请求的一个或多个被转发到存储器缓冲器134并且从统一请求队列400中去除,因此条目402将在存储器访问请求被再次发出时可能是可用的。块610之后,图6的过程在块620终止。
返回块608,响应控制逻辑200确定统一请求队列400中的条目402可用于分配给存储器访问请求,控制逻辑200在系统构架130上提供Ack一致性响应,发出它接受存储器访问请求用于服务的信号,如在块612所示出的。此外,控制逻辑200在统一请求队列400的可用条目402中安装存储器访问请求。在块614,控制逻辑200还通过递减由写条目可用计数器430和读条目可用计数器432中(假设计数值还不是0)每一个所指示的可用队列条目的数量,反映给存储器访问请求分配条目402。此后,图6的过程在块620结束。
现在参考图7,其中说明了用在例如半导体IC逻辑设计、仿真、测试、布局和制造中的示例性设计流程700的框图。设计流程700包括用于处理设计结构或设备以便生成以上所述设计结构和/或设备的逻辑或者以别的方式功能上等效的表示的过程、机器和/或机制。被设计流程700处理和/或生成的设计结构可以在机器可读的传输或存储介质上编码,以便包括当在数据处理系统上被执行或以别的方式处理时生成硬件部件、电路、设备或系统的逻辑、结构、机械或以别的方式功能上等效的表示的数据和/或指令。机器包括但不限于,用在IC设计过程中的任何机器,诸如设计、制造或仿真电路、部件、设备或系统。例如,机器可以包括:光刻机、用于生成掩模的机器和/或装备(例如,电子束书写机)、用于仿真设计结构的计算机或装备、用在制造或测试过程中的任何装置、或者用于把设计结构的功能等效表示编程到任何介质中的任何机器(例如,用于编程可编程门阵列的机器)。
设计流程700可以取决于被设计的表示类型而变化。例如,用于构建专用IC(ASIC)的设计流程700可能不同于用于设计标准组件的设计流程700,或不同于用于将设计实例化到可编程阵列,例如由Inc.或Inc.提供的可编程门阵列(PGA)或现场可编程门阵列(FPGA)中的设计流程700。
图7说明了多个这样的设计结构,其中包括优选地由设计过程710处理的输入设计结构720。设计结构720可以是由设计过程710生成和处理以产生硬件设备的逻辑上等效的功能表示的逻辑仿真设计结构。设计结构720还可以或备选地包括数据和/或程序指令,所述数据和/或程序指令由设计过程710处理时,生成硬件设备的物理结构的功能表示。无论表示功能和/或结构设计特性,均可以使用例如由核心开发人员/设计人员实施的电子计算机辅助设计(ECAD)生成设计结构720。当在机器可读数据传输、门阵列或存储介质上编码时,设计结构720可以由设计过程710内的一个或多个硬件和/或软件模块访问和处理,以仿真或以其它方式在功能上表示诸如上面示出的那些电子组件、电路、电子或逻辑模块、装置、设备或系统。因此,设计结构720可以包括文件或其它数据结构,其中包括人类和/或机器可读源代码、编译结构和计算机可执行代码结构,当所述文件或其它数据结构由设计或仿真数据处理系统处理时,在功能上仿真或以其它方式表示硬件逻辑设计的电路或其它级别。此类数据结构可以包括硬件描述语言(HDL)设计实体或遵循和/或兼容诸如Verilog和VHDL的低级HDL设计语言和/或诸如C或C++的高级设计语言的其它数据结构。
设计过程710优选地采用和结合硬件和/或软件模块,所述模块用于合成、转换或以其它方式处理以上公开的组件、电路、设备或逻辑结构的设计/仿真功能等价物,以生成可以包含诸如设计结构720的设计结构的网表780。网表780可以包括例如编译或以其它方式处理的数据结构,所述数据结构表示描述与集成电路设计中的其它元件和电路的连接的线缆、分立组件、逻辑门、控制电路、I/O设备、模型等的列表。网表780可以使用迭代过程合成,其中网表780被重新合成一次或多次,具体取决于用于该设备的设计规范和参数。对于在此所述的其它设计结构类型,网表780可以记录在机器可读存储介质上或编程到可编程门阵列中。所述介质可以是非易失性存储介质,诸如磁或光盘驱动器、可编程门阵列、压缩闪存或其它闪存。此外或备选地,所述介质可以是系统或高速缓冲存储器或缓冲器空间。
设计过程710可以包括用于处理包括网表780在内的各种输入数据结构类型的硬件和软件模块。此类数据结构类型例如可以驻留在例如库元件730内并包括一组常用元件、电路和设备,其中包括给定制造技术(例如,不同的技术节点,32纳米、45纳米、90纳米等)的模型、布图和符号表示。所述数据结构类型还可以包括设计规范740、特征数据750、检验数据760、设计规则770和测试数据文件785,它们可以包括输入测试模式、输出测试结果和其它测试信息。设计过程710还可以例如包括标准机械设计过程,诸如用于诸如铸造、成型和模压成形等操作的应力分析、热分析、机械事件仿真、过程仿真。机械设计领域的普通技术人员可以在不偏离本发明范围和主旨的情况下理解在设计过程710中使用的可能的机械设计工具和应用的范围。设计过程710也可以包括用于执行诸如定时分析、检验、设计规则检查、放置和布线操作之类的标准电路设计过程的模块。
设计过程710采用和结合诸如HDL编译器的逻辑和物理设计工具以及仿真建模工具,以便与任何其它机械设计或数据(如果适用)一起处理设计结构720连同绘出的支持数据结构的部分或全部,从而生成第二设计结构790。设计结构790以用于机械设备和结构的数据交换的数据格式(例如以IGES、DXF、Parasolid XT、JT、DRG或任何其它用于存储或呈现此类机械设计结构的适合格式)驻留在存储介质或可编程门阵列上。类似于设计结构720,设计结构790优选地包括一个或多个文件、数据结构或其它计算机编码的数据或指令,它们驻留在传输或数据存储介质上,并且当由ECAD系统处理时生成在此公开的本发明一个或多个实施例的逻辑上或以其它方式在功能上等效的形式。在一个实施例中,设计结构790可以包括在功能上仿真以上所公开设备的编译后的可执行HDL仿真模型。
设计结构790也可以采用用于集成电路的布图数据交换的数据格式和/或符号数据格式(例如,以GDSII(GDS2)、GL1、OASIS、映射文件或任何其它用于存储此类设计数据结构的适合格式存储的信息)。设计结构790可以包括信息,诸如像符号数据、映射文件、测试数据文件、设计内容文件、制造数据、布图参数、线缆、金属级别、通孔、形状、用于在整个生产线中布线的数据、以及制造商或其他设计人员/开发人员制造上述设备或结构所需的任何其它数据。设计结构790然后可以前进到阶段795,其中,例如,设计结构790:前进到流片(tape-out),被发布用以制造、被发布到掩模室(maskhouse)、被发送到另一个设计室,被发回给客户等。
如已经描述的,在至少一个实施例中,统一请求队列包括用于为多种类型的请求服务的多个条目。统一请求队列中的每一个条目一般可分配给多种请求类型中任意一种类型的请求。在统一请求队列中为多种类型请求中的第一种请求类型预留多个条目。基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
所公开队列管理技术的一个优点是不需要为特定类型或种类的请求预留条目,而不存在一般的得不到队列条目用以接收那种类型或种类的请求(如在预定时间间隔内通过大于阈值数量的重试所证实的)。如果出现竞争,那么所公开的队列管理技术通过预留足够的队列条目为每一种类型或种类的请求提供基准宽带来补偿以确保公平。
虽然已经如参考优选实施例所述的那样特定地示出了各种实施例,但是本领域技术人员应当理解,在不背离本权利要求的主旨和范围的情况下,可以对形式和细节进行各种变化。例如,尽管实施例中已经描述采用了两种的请求(例如,读请求和写请求),但是本领域技术人员应当理解,本文所公开的队列管理技术可应用到采用多于两种或两种类型请求的实施例。并且,尽管各方面已经被描述为关于执行指导本发明功能的程序代码的计算机系统,但是应该理解,本发明可替代地实现为包括存储可由数据处理系统处理的程序代码的计算机可读存储设备(例如,易失性或非易失性存储器、光或磁盘或其它法定制品)的程序产品。并且,如本文所使用的,术语“耦合”定义为包含耦合元件或块之间采用直接电连接的实施例,以及采用一个或多个中间元件或块实现的耦合元件或块之间采用非直接电连接的实施例。另外,本文中术语“示例性”定义为指特征的一个例子,而不一定是最好或优选的例子。
Claims (17)
1.一种数据处理系统中的数据处理方法,所述方法包括:
经由包括多个条目的统一请求队列为多种类型的请求服务,其中每个条目一般都可分配给多种请求类型中任意一种的请求;
在统一请求队列中为多种类型的请求中的第一种请求类型预留多个条目;以及
基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
2.如权利要求1所述的方法,还包括:把为第一种请求类型预留的条目的数量初始化为零。
3.如权利要求1所述的方法,其中:
数据处理系统包括存储器控制器,所述存储器控制器包括统一请求队列;
为多种类型的请求服务包括为多种类型的存储器访问请求服务。
4.如权利要求3所述的方法,其中动态改变包括基于在预定时间段内为第一种请求类型的请求提供的重试一致性响应的数量,动态改变预留的条目数量。
5.如权利要求1所述的方法,其中动态改变包括把多个预留条目只最多递增到最大值,所述最大值小于统一请求队列中的条目总数。
6.如权利要求1所述的方法,还包括:
基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第二种请求类型的请求数量,动态改变为多种请求类型中第二种请求类型预留的条目数量。
7.如权利要求1所述的方法,还包括:
响应统一请求队列的空闲条目为第一种请求类型预留而在不分配所述空闲条目的情况下拒绝第二种请求类型的请求。
8.一种集成电路,包括:
衬底;
在衬底上构造的电路系统,其中所述电路系统包括:
包括多个条目的统一请求队列,其中每个条目一般都可分配给多种请求类型中任意一种的请求;以及
控制逻辑,在统一请求队列中为多种类型的请求中的第一种请求类型预留多个条目,以及基于在统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
9.如权利要求8所述的集成电路,其中控制逻辑把为第一种请求类型预留的条目的数量初始化为零。
10.如权利要求8所述的集成电路,其中控制逻辑用最大数量动态地约束预留条目数量的变化,所述最大数量小于统一请求队列中的条目总数。
11.如权利要求8所述的集成电路,其中控制逻辑基于由于统一请求队列中的条目分配给其它请求而被统一请求队列拒绝的第二种请求类型的请求数量,动态改变为多种请求类型中第二种请求类型预留的条目数量。
12.如权利要求8所述的集成电路,其中所述电路系统包括存储器控制器,所述存储器控制器包括统一请求队列。
13.如权利要求12所述的集成电路,其中控制逻辑基于在预定时间段内为第一种请求类型的请求提供的重试一致性响应的数量,动态改变预留的条目数量。
14.一种数据处理系统,包括:
如权利要求12所述的存储器控制器;以及
耦合到所述存储器控制器的处理器核。
15.如权利要求8所述的集成电路,其中控制逻辑响应统一请求队列的空闲条目为第一种请求类型预留而在不分配所述空闲条目的情况下拒绝第二种请求类型的请求。
16.一种有形地包含在机器可读存储介质中,用于设计、制造、或测试集成电路的设计结构,所述设计机构包括:
存储器控制器,用于控制对处于数据处理系统的易失性存储器层次的最底层的系统存储器访问,所述存储器控制器包括:
包括多个条目的统一请求队列,其中每个条目一般都可分配给多种请求类型中任意一种的请求;以及
控制逻辑,在统一请求队列中为多种类型的请求中的第一种请求类型预留多个条目,以及基于由于统一请求队列中的条目分配给其它请求被统一请求队列拒绝的第一种请求类型的请求数量,动态改变为第一种请求类型预留的条目数量。
17.如权利要求16所述的设计结构,其中所述设计机构包括硬件描述语言(HDL)设计结构。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/862,057 US9361240B2 (en) | 2013-04-12 | 2013-04-12 | Dynamic reservations in a unified request queue |
US13/862,057 | 2013-04-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104102761A true CN104102761A (zh) | 2014-10-15 |
CN104102761B CN104102761B (zh) | 2017-05-10 |
Family
ID=51670912
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410143989.1A Active CN104102761B (zh) | 2013-04-12 | 2014-04-11 | 数据处理系统中数据处理的方法和集成电路 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9361240B2 (zh) |
CN (1) | CN104102761B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469126A (zh) * | 2015-08-12 | 2017-03-01 | 北京忆恒创源科技有限公司 | 处理io请求的方法及其存储控制器 |
CN107368523A (zh) * | 2017-06-07 | 2017-11-21 | 武汉斗鱼网络科技有限公司 | 一种数据处理方法及系统 |
CN115933860A (zh) * | 2023-02-20 | 2023-04-07 | 飞腾信息技术有限公司 | 一种处理器系统、处理请求的方法及计算设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102251813B1 (ko) * | 2015-04-07 | 2021-05-13 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US10402120B2 (en) | 2016-07-15 | 2019-09-03 | Advanced Micro Devices, Inc. | Memory controller arbiter with streak and read/write transaction management |
US10445668B2 (en) * | 2017-01-04 | 2019-10-15 | Richard Oehrle | Analytical system for assessing certain characteristics of organizations |
US11360905B2 (en) | 2019-05-24 | 2022-06-14 | Texas Instmments Incorporated | Write merging on stores with different privilege levels |
US20210357336A1 (en) * | 2020-05-14 | 2021-11-18 | Advanced Micro Devices, Inc. | Efficient memory bus management |
US11625352B2 (en) | 2020-06-12 | 2023-04-11 | Advanced Micro Devices, Inc. | DRAM command streak management |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038645A (en) * | 1996-08-28 | 2000-03-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache |
US20030163660A1 (en) * | 2002-02-25 | 2003-08-28 | Intel Corporation | Dynamically adjustable load-sharing circular queues |
US7444491B1 (en) * | 2005-12-06 | 2008-10-28 | Nvidia Corporation | Automatic resource sharing between FIFOs |
US20110320728A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy |
US20130067172A1 (en) * | 2011-09-09 | 2013-03-14 | Lsi Corporation | Methods and structure for improved buffer allocation in a storage controller |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991819A (en) * | 1996-12-03 | 1999-11-23 | Intel Corporation | Dual-ported memory controller which maintains cache coherency using a memory line status table |
US6738371B1 (en) * | 1999-09-28 | 2004-05-18 | Ericsson Inc. | Ingress data queue management in a packet data router |
EP1249972A1 (en) * | 2001-04-09 | 2002-10-16 | Telefonaktiebolaget L M Ericsson (Publ) | Method of controlling a queue buffer |
US20030223442A1 (en) * | 2002-05-29 | 2003-12-04 | Huang Anguo T. | Buffer memory reservation |
US6892283B2 (en) * | 2002-12-05 | 2005-05-10 | International Business Machines Corporation | High speed memory cloner with extended cache coherency protocols and responses |
US7177985B1 (en) * | 2003-05-30 | 2007-02-13 | Mips Technologies, Inc. | Microprocessor with improved data stream prefetching |
US7369500B1 (en) * | 2003-06-30 | 2008-05-06 | Juniper Networks, Inc. | Dynamic queue threshold extensions to random early detection |
US7706261B2 (en) * | 2004-08-27 | 2010-04-27 | Jinshen Sun | Queue-based active queue management process |
US20080063004A1 (en) * | 2006-09-13 | 2008-03-13 | International Business Machines Corporation | Buffer allocation method for multi-class traffic with dynamic spare buffering |
US8775549B1 (en) * | 2007-09-27 | 2014-07-08 | Emc Corporation | Methods, systems, and computer program products for automatically adjusting a data replication rate based on a specified quality of service (QoS) level |
US8893146B2 (en) * | 2009-11-13 | 2014-11-18 | Hewlett-Packard Development Company, L.P. | Method and system of an I/O stack for controlling flows of workload specific I/O requests |
-
2013
- 2013-04-12 US US13/862,057 patent/US9361240B2/en active Active
- 2013-09-25 US US14/036,508 patent/US9384146B2/en not_active Expired - Fee Related
-
2014
- 2014-04-11 CN CN201410143989.1A patent/CN104102761B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038645A (en) * | 1996-08-28 | 2000-03-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods using a combined writeback queue and victim cache |
US20030163660A1 (en) * | 2002-02-25 | 2003-08-28 | Intel Corporation | Dynamically adjustable load-sharing circular queues |
US7444491B1 (en) * | 2005-12-06 | 2008-10-28 | Nvidia Corporation | Automatic resource sharing between FIFOs |
US20110320728A1 (en) * | 2010-06-23 | 2011-12-29 | International Business Machines Corporation | Performance optimization and dynamic resource reservation for guaranteed coherency updates in a multi-level cache hierarchy |
US20130067172A1 (en) * | 2011-09-09 | 2013-03-14 | Lsi Corporation | Methods and structure for improved buffer allocation in a storage controller |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469126A (zh) * | 2015-08-12 | 2017-03-01 | 北京忆恒创源科技有限公司 | 处理io请求的方法及其存储控制器 |
CN106469126B (zh) * | 2015-08-12 | 2020-07-07 | 北京忆恒创源科技有限公司 | 处理io请求的方法及其存储控制器 |
CN107368523A (zh) * | 2017-06-07 | 2017-11-21 | 武汉斗鱼网络科技有限公司 | 一种数据处理方法及系统 |
CN107368523B (zh) * | 2017-06-07 | 2020-05-12 | 武汉斗鱼网络科技有限公司 | 一种数据处理方法及系统 |
CN115933860A (zh) * | 2023-02-20 | 2023-04-07 | 飞腾信息技术有限公司 | 一种处理器系统、处理请求的方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN104102761B (zh) | 2017-05-10 |
US9384146B2 (en) | 2016-07-05 |
US20140310487A1 (en) | 2014-10-16 |
US20140310486A1 (en) | 2014-10-16 |
US9361240B2 (en) | 2016-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104102761A (zh) | 数据处理系统中数据处理的方法和集成电路 | |
US20210182190A1 (en) | Intelligent die aware storage device scheduler | |
US20200083909A1 (en) | Data storage system with enforced fencing | |
US20230015404A1 (en) | Memory system and data processing system including the same | |
US20190121553A1 (en) | Multiprocessor system with independent direct access to bulk solid state memory resources | |
US10275348B2 (en) | Memory controller for requesting memory spaces and resources | |
EP3100184B1 (en) | Prioritizing data reconstruction in distributed storage systems | |
US9495290B2 (en) | Various methods and apparatus to support outstanding requests to multiple targets while maintaining transaction ordering | |
JP5384576B2 (ja) | 複数の異種のソリッドステート・ストレージ・ロケーションの選択的利用 | |
US11163452B2 (en) | Workload based device access | |
US10282292B2 (en) | Cluster-based migration in a multi-level memory hierarchy | |
CN103823722A (zh) | 基于请求类型的选择性后置数据错误检测 | |
Balegas et al. | Extending eventually consistent cloud databases for enforcing numeric invariants | |
KR20190019203A (ko) | 가상 컨트롤러 모드를 가진 메모리 컨트롤러 | |
US9823948B2 (en) | Efficient resource utilization in data centers | |
CN106233258B (zh) | 可变宽度纠错 | |
CN109313593A (zh) | 存储系统 | |
CN110795279B (zh) | 用于促进dram数据缓存转储和机架级电池备份的系统和方法 | |
Ghandeharizadeh et al. | Design, implementation, and evaluation of write-back policy with cache augmented data stores | |
CN107577492A (zh) | 加速文件系统读写的nvm块设备驱动方法及系统 | |
US20190220341A1 (en) | Data processing system and operating method thereof | |
US11010091B2 (en) | Multi-tier storage | |
CN114902186A (zh) | 非易失性存储器模块的错误报告 | |
Schmidt | Accelerating checkpoint/restart application performance in large-scale systems with network attached memory | |
US10928871B2 (en) | Computing device and operation method thereof |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |