CN112639752A - 基于访问效率对存储器请求进行排序 - Google Patents
基于访问效率对存储器请求进行排序 Download PDFInfo
- Publication number
- CN112639752A CN112639752A CN201980055787.2A CN201980055787A CN112639752A CN 112639752 A CN112639752 A CN 112639752A CN 201980055787 A CN201980055787 A CN 201980055787A CN 112639752 A CN112639752 A CN 112639752A
- Authority
- CN
- China
- Prior art keywords
- memory
- write
- requests
- request
- read
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 577
- 238000000034 method Methods 0.000 claims description 45
- 239000000872 buffer Substances 0.000 claims description 29
- 238000012545 processing Methods 0.000 claims description 22
- 230000004044 response Effects 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 18
- 230000008569 process Effects 0.000 claims description 17
- 230000000694 effects Effects 0.000 claims description 5
- 238000013461 design Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 20
- 230000007704 transition Effects 0.000 description 11
- 238000004519 manufacturing process Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 7
- 239000000463 material Substances 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 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/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
- G06F13/1626—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
-
- 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/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- 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/1673—Details of memory controller using buffers
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System (AREA)
Abstract
本发明公开了一种装置,其实施方案包括存储器电路和存储器控制器电路。所述存储器控制器电路可包括写入请求队列。所述存储器控制器电路可被配置为接收访问所述存储器电路的存储器请求,并且确定所述存储器请求包括读取请求还是写入请求。所接收的读取请求可被调度以用于执行,而所接收的写入请求可存储在所述写入请求队列中。所述存储器控制器电路可基于实现指定存储器访问效率并且基于存储在所述写入请求队列中的写入请求的数量,对已调度存储器请求进行重新排序。
Description
技术领域
本文所述的实施方案涉及计算系统的领域,并且更具体地讲,涉及由计算系统中的存储器控制器对存储器请求的管理。
背景技术
包括片上系统(SoC)的计算机系统包括处理器和多个存储器电路,该多个存储器电路存储软件程序或应用程序以及由处理器操作的数据。此类存储器可在存储容量以及访问时间方面变化。在一些计算系统中,一些存储器电路经由存储器控制器电路耦接到处理器,该存储器控制器电路经由通信链路或其他通信网络与处理器通信。
在操作期间,可包括处理器内核、图形处理器等的处理器经由通信链路传输访问存储器控制器的请求。存储器控制器接收请求并且为请求仲裁对存储器电路的访问。在将特定请求从处理器中继到存储器电路时,存储器控制器电路等待直到存储器电路实现特定请求。为了实现特定请求,存储器电路可将所请求的数据或确认信号发送到存储器控制器电路,该存储器控制器电路继而将数据或信号中继到请求处理器上。
发明内容
广义地讲,本公开设想了一种系统、一种装置和一种方法,其中所述装置包括存储器电路和存储器控制器电路。所述存储器控制器电路可包括写入请求队列。所述存储器控制器电路可被配置为接收访问所述存储器电路的存储器请求,并且确定所述存储器请求包括读取请求还是写入请求。所接收的读取请求可被调度以用于执行,而所接收的写入请求可存储在所述写入请求队列中。所述存储器控制器电路可基于实现指定存储器访问效率并且基于存储在所述写入请求队列中的写入请求的数量,对已调度存储器请求进行重新排序。
在一些具体实施中,所述存储器控制器电路可被配置为响应于读取序列和写入序列的完成而确定当前存储器访问效率。读取序列可对应于多个读取请求的执行,而写入序列可对应于多个写入请求的执行。所述当前存储器访问效率可基于用于处理存储器请求的时钟周期与在所述完成的读取序列和写入序列期间发生的总时钟周期的比率来确定。
在特定的具体实施中,所述存储器控制器电路可被配置为基于所述当前存储器访问效率与所述指定存储器访问效率的比较来修改要在后续读取序列和写入序列中执行的存储器请求的数量。在各种实施方案中,所述存储器控制器电路可被配置为将至少一个部分写入存储器请求调度成要在读取序列和写入序列之间执行。
在一些实施方案中,所述存储器控制器电路可被配置为响应于确定所述写入请求队列中的写入请求的数量满足请求的阈值数量,调度包括在所述写入请求队列中的写入请求的子集。在特定的具体实施中,所述存储器控制器电路可被配置为通过将所述多个写入请求调度成要在执行多个读取请求之后执行来使读取请求优先于写入请求。在各种实施方案中,所述存储器控制器电路可被配置为响应于确定要由特定写入请求存储的数据量大于要由不同写入请求存储的数据量,使所述特定写入请求优先于所述不同写入请求。
附图说明
下面的详细描述参照附图,现在对这些附图进行简要说明。
图1示出了包括存储器控制器电路和存储器电路的存储器系统的实施方案的框图。
图2示出了存储器控制器电路和存储器电路的实施方案的框图,其中存储器电路包括多个存储器设备。
图3描绘了已调度请求缓冲区的实施方案以及表示用于执行缓冲存储器请求的时间线的图表。
图4呈现了表示已调度请求缓冲区的不同状态的三个表。
图5示出了已调度请求缓冲区的另一个实施方案以及描绘用于执行缓冲存储器请求的时间线的对应图表。
图6示出了用于由存储器控制器电路调度存储器请求的方法的实施方案的流程图。
图7呈现了用于确定对应于存储器请求的执行的效率值的方法的实施方案的流程图。
图8描绘了计算机系统的实施方案的框图。
图9示出了根据一些实施方案的描绘示例性计算机可读介质的框图。
尽管本公开容易作出各种修改形式和替代形式,但附图中以举例的方式示出并将在本文中详细描述其具体实施方案。然而,应当理解,附图及具体实施方式并非旨在将本公开限制于例示的特定形式,而正相反,其目的在于覆盖落在由所附权利要求书限定的本公开的实质和范围内的所有修改形式、等同形式和替代形式。如在整个本专利申请中所使用的那样,以允许的意义(即,意味着具有可能性)而非强制的意义(即,意味着必须)使用字词“可”。类似地,字词“包括”意味着包括但不限于。
各种单元、电路或其他部件可被描述为“被配置为”实行一个或多个任务。在此类上下文中,“被配置为”是一般意味着“具有”在操作期间实行一个或多个任务的“电路”的结构的宽泛表述。如此,即使在单元/电路/部件当前未接通时,单元/电路/部件也可被配置为执行任务。通常,形成与“被配置为”对应的结构的电路可包括硬件电路。类似地,为了描述中方便,可将各种单元/电路/部件描述为执行一个或多个任务。此类描述应当被解释为包括短语“被配置为”。表述被配置为执行一项或多项任务的单元/电路/部件明确地旨在对该单元/电路/部件不援引对35U.S.C.§112第f段的解释。更一般地,对任何元件的表述都明确旨在不调用35U.S.C.§112第f段针对该元件的解释,除非特别表述了“用于……的装置”或“用于……的步骤”的语言。
如本文所用,术语“基于”用于描述影响确定的一个或多个因素。此术语不排除可能有附加因素可影响确定。也就是说,确定可仅基于指定的因素或基于所指定的因素及其他未指定的因素。考虑短语“基于B确定A”。此短语指定B是用于确定A的因素或者B影响A的确定。此短语并不排除A的确定也可基于某个其他因素诸如C。该短语还旨在涵盖A仅基于B来确定的实施方案。短语“基于”因此与短语“至少部分地基于”是同义的。
具体实施方式
在计算机系统中,存储器电路的分级结构用于存储供计算机系统内的功能电路块使用的程序指令和数据。此类功能电路块可包括处理器、处理器内核、图形内核、音频处理电路、网络处理电路等。存储器电路中的一些(诸如高速缓存存储器电路)可直接耦接到功能电路块,以便为功能块提供低密度快速访问专用存储装置。在多个功能电路块之间共享其他存储器电路以允许功能电路块访问更大量的存储空间。为了便于存储器电路的此类共享,可采用存储器控制器电路来管理对存储器电路的访问。
存储器控制器电路从功能电路块接收访问存储器电路的请求。此类请求可包括从存储器电路检索先前存储的数据的请求(通常称为“读取请求”)以及在存储器电路中存储数据的请求(通常称为“写入请求”)。在一些情况下,读取请求和写入请求可组合以形成“读取-修改-写入”请求。
当存储器控制器电路接收到访问存储器电路的请求时,在被称为调度的过程中将每个请求以执行顺序相对于其他接收的请求放置。存储器控制器电路可根据各种标准确定执行顺序。例如,某些类型的访问存储器的请求可具有较高优先级,并且因此在执行顺序中被放置在具有较低优先级的请求之前。在一些情况下,根据各种标准的调度可导致期间存储器电路未被充分利用的时间段,从而减少存储器子系统的效率。如本文所述和所用,存储器子系统“效率”是指对存储器子系统的利用的任何测量。效率的一个常见量度是活动(即,非空闲)存储器周期与在给定时间量内发生的总可能存储器周期的比率。
计算机系统中的存储器电路的低效使用可不利地影响计算机系统的性能。例如,以低效方式从存储器中检索视频数据可导致不正确显示的视频。另外,低效的存储器访问可导致软件或程序指令不能及时地用于处理器或处理器内核,从而导致计算机系统性能的暂停或减慢下降。附图中示出并在下面描述的实施方案可提供用于调度存储器访问请求并同时保持期望效率的技术,由此改善计算机系统性能。
在图1中示出了包括存储器控制器电路和存储器电路的存储器系统的实施方案的框图。如图所示,存储器系统100包括经由通信总线180耦接到存储器电路120的存储器控制器电路110。存储器控制器电路110还包括已调度请求缓冲区130和写入请求队列140。在各种实施方案中,存储器控制器电路110和存储器电路120可包括在相同集成电路上或者可在单独集成电路中实现。存储器控制器电路110可以是状态机或其他顺序逻辑电路的具体实施方案,并且存储器电路120可以是任何合适类型的存储器电路,诸如动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)等。
如图所示,存储器控制器电路110被配置为接收访问存储器电路的存储器请求,并且确定存储器请求包括读取请求还是写入请求。存储器控制器电路110被进一步配置为调度所接收的读取请求以用于执行或将所接收的写入请求存储在写入请求队列140中。另外,存储器控制器电路110被配置为基于实现指定存储器访问效率160,并且进一步基于存储在写入请求队列140中的写入请求的数量,对已调度存储器请求进行重新排序。
如图所示,存储器控制器电路110可基于读取请求来生成要经由通信总线180发送到存储器电路120的一个或多个存储器命令。此类命令可被放置到已调度请求缓冲区130中。在各种实施方案中,已调度请求缓冲区130可以是被配置为存储命令134-136的寄存器文件或其他合适存储电路的特定实施方案。在一些情况下,存储器控制器电路110可将读取请求或与读取请求相关联的命令放置在已调度请求缓冲区130中的下一个可用条目中。在其他情况下,存储器控制器电路110可将包括在存储器请求150中的地址进行比较,并且调度读取请求以便与访问由所包括的地址引用的相同存储器页面上的信息的其他读取请求一起执行。
就写入请求而言,存储器控制器电路110可继续将所接收的写入请求存储到写入请求队列140中,直到排队的写入请求的数量达到阈值数量,如阈值141所示。在此时间期间,存储器控制器电路110可继续调度并执行读取请求。在排队的写入请求的数量达到阈值141之后,通过将写入请求放置到已调度请求缓冲区130中以便以调度顺序执行,调度排队的写入请求中的一者或多者(诸如写入请求144-146)。
如下文更详细所述,在一些实施方案中,存储器控制器电路110可在完成“读取序列”(不包括写入的一系列读取存储器访问)和“写入序列”(一系列写入存储器访问)之后确定通信总线180上的当前存储器访问效率170。当计算了当前存储器访问效率时(在完成单个读取序列和单个写入序列之后,或者以其他方式),然后可将该效率与指定存储器访问效率160进行比较作为重新排序过程的一部分。在各种实施方案中,指定存储器访问效率160可被指定为存储器系统100的设计的一部分,可由硬件基于当前处理要求来确定,或者甚至可由软件设置。
如上所述,存储器控制器电路110经由通信总线180耦接到存储器电路120。在各种实施方案中,通信总线180可包括本地时钟信号,以及用于命令、地址和数据的专用线。此类数据线可为双向的,从而允许存储器控制器电路110或存储器电路120将数据驱动到数据线上。需注意,存储器控制器电路100和存储器电路120不能同时驱动数据线。每次从读取操作转变为写入操作(或反之亦然)时,可能需要多个周期以允许包括在通信总线180中的数据线达到新设备可能驱动数据线的状态。例如,当从读取操作切换到写入操作时,存储器控制器电路110必须等待开始发送要被写入的数据,直到存储器电路120已完成发送与读取操作相关联的数据。
需注意,图1所示的存储器控制器电路110仅为一个示例。图1的图示经简化以突出与本公开相关的特征结构。在其他实施方案中,存储器控制器电路110可包括附加电路块,诸如被配置为经由例如通信总线180发送和接收数据的接口电路。
如图1所描绘,写入请求可存储在写入请求队列中。移动到图2,示出了利用写入请求队列的存储器控制器的实施方案。存储器控制器电路210包括系统接口211、仲裁电路212、指令队列230和写入请求队列240。存储器控制器电路210经由数据总线280和总线时钟282耦接到存储器电路220。存储器电路220包括存储器设备225a-225d,该存储器设备继而包括相应的多个存储器组227和存储器页面229(为清楚起见仅针对存储器设备225a示出)。在一些实施方案中,存储器控制器电路210、指令队列230、写入请求队列240和存储器电路220可对应于图1中的存储器控制器电路110、已调度请求缓冲区130、写入请求队列140和存储器电路120。总线时钟282和通信总线280可共同对应于通信总线180。
如图所示,存储器电路220包括四个存储器设备225a-225d(统称为存储器设备225)。存储器设备225中的每一者包括多个存储器组227(为了清楚起见,存储器组227和存储器页面229仅针对存储器设备225A示出)。在各种实施方案中,在存储器设备225之间,存储器组的数量可以相同或可以变化。对于存储器设备227中的给定存储器设备,不同的存储器组可以能够同时或以重叠顺序实现存储器请求。然而,每个存储器设备227可被限于一次发送或接收单个存储器请求的命令、地址和数据。存储器组227中的每一者包括多个存储器页面229。需注意,“存储器页面”(在本文中也称为“页面”)对应于可使用单个读取命令或写入命令来从单个存储器组227访问的数据量。在一些实施方案中,存储器页面可对应于存储器阵列中的存储器单元的一个或多个物理行。在其他实施方案中,存储器页面可对应于存储器单元的不同物理或逻辑组织,诸如存储器单元的一列或多列,或者可用存储器地址值的一部分寻址的多个存储器单元。
与存储器控制器电路110类似,存储器控制器电路210包括用于接收、解码、调度和执行所接收的存储器请求的电路。如图所示,系统接口211从包括存储器控制器210的计算系统中包括的处理电路接收访问存储器电路220的存储器请求。仲裁电路212从系统接口211接收存储器请求,并且确定存储器请求包括读取请求还是写入请求。仲裁电路212将所接收的读取请求放置到指令队列230中。在一些实施方案中,仲裁电路212可利用具有类似存储器地址的其他读取请求来调度读取请求。例如,具有对应于相同存储器页面229的存储地址的读取请求可一起被调度,从而允许通过共同存储器页面229的单次激活来实现若干读取请求。又如,在存储器控制器电路210可向不同存储器组或设备发送并发请求的实施方案中,具有到不同存储器组227或到不同存储器设备225的地址的读取请求可一起被调度。
应当注意,如本文所用,术语“并发”和“并行”用于指在重叠时间点期间可能发生的事件。“并发”或“并行”的使用并非旨在暗示事件同时开始和结束,但也不排除此类发生。
仲裁电路212将所接收的写入请求放置到写入请求队列240中。在其中可使用存储器控制器电路210的计算系统中,读取请求可优先于写入请求执行。可针对将由活动应用程序或过程使用的数据发出读取请求,并且因此,用于检索数据和实现请求的时间量可影响应用程序或进程的性能。相比之下,写入请求可包括先前由应用程序或过程使用以在稍后时间使用的数据。此外,写入请求中包括的数据当前可存储在高速缓存存储器中,并且因此即使尚未实现写入请求,也可用于应用程序或过程。
如图所示,通信总线280是用于传输读写数据两者的组合输入/输出(I/O)总线。当从读取命令切换到写入命令时,与读取命令相关联的数据从存储器电路220发送到存储器控制器电路210。在I/O总线被重新配置为沿相反方向传输数据以用于写入命令之前,该数据由存储器控制器电路210接收。相反的情况对于从写入命令切换到读取命令是真实的,例如,在任何读取数据可由存储器电路220发送之前,经由I/O总线发送与写入命令相关联的数据。
因此,在读取请求和写入请求之间来回切换通信总线280产生总线时钟282的周期,由于等待数据传输的完成,因此该周期可能不用于下一个存储器命令。这些未使用的时钟周期可导致存储器控制器电路210的效率的减小。为了实现期望的效率目标,存储器控制器电路210可调整在单个读取序列期间处理的读取请求的数量以及在单个写入序列期间处理的写入请求的数量。需注意,给定的读取序列或写入序列可包括任何合适数量的对应存储器请求,包括在一些情况下为零请求。
如上所述,基于当前存储器访问效率来确定为相应的读取序列和写入序列调度的读取请求和写入请求的数量。在读取序列和后续写入序列已经完成之后,存储器控制器电路210基于用于处理存储器请求的总线时钟282的周期数与在完成的读取序列和写入序列期间发生的总线时钟282的周期总数的比率来确定当前存储器访问效率的值。然后,存储器控制器电路210可将当前存储器访问效率与指定存储器访问效率进行比较以确定相对于指定效率的电流增量。然后,存储器控制器电路210基于实现指定存储器访问效率来对已调度存储器请求进行重新排序。
除了调整在给定序列期间处理的请求的数量之外,存储器控制器电路210还可采用一种或多种请求排序技术以便实现指定存储器访问效率。例如,存储器控制器电路210可修改要在后续的读取序列和写入序列中执行的存储器请求的数量。存储器控制器电路210可调度要在读取序列和写入序列之间执行的至少一个部分写入存储器请求(即,读取-修改-写入请求)。另一种技术包括响应于确定要由特定写入请求存储的数据量大于要由不同写入请求存储的数据量,使特定写入请求优先于不同写入请求。这些技术将在下文进行更详细的描述。
通过使读取请求优先于写入请求,存储器控制器电路210可将所接收的写入请求存储到写入请求队列240中,由此为所接收的读取请求释放指令队列230中的可用条目。因此,在一些条件下,一组读取序列和写入序列可包括所有读取请求而不包括写入请求。因此,读取请求的这种优先化可通过减小发出读取请求与随后实现读取请求之间的时间量来改善活动应用程序或过程的性能。
如图所示,仲裁电路212将所接收的写入请求244-258存储在写入请求队列240中。一旦排队的写入请求的数量达到阈值数量(如写入请求258和阈值241指示的),仲裁电路212就通过将排队的写入请求的子集放置到指令队列230中来调度该子集。如图2所示,子集包括写入请求244-246。然而,在其他实施方案中,任何合适数量的写入请求可包括在子集中,包括写入请求队列240中的所有写入请求。为了优先化读取请求,仲裁电路212将读取请求232-237调度成将在写入请求244-246之前执行。读取请求232-237形成读取序列,而写入请求244-246形成写入序列。读取序列和写入序列一起形成一组读取序列和写入序列,在本文中也称为存储器请求序列。
阈值241的值可在存储器控制器电路210的设计期间设置,或者由软件(诸如在包括存储器控制器电路210的计算机系统中执行的操作系统)设置。在一些实施方案中,可基于当前存储器访问效率与指定存储器访问效率的比较来调整阈值。
仲裁电路212可响应于确定要由特定写入请求存储的数据量大于要由不同写入请求存储的数据量,使特定写入请求优先于不同写入请求。如指令队列230中所示,写入请求以246、244以及然后245的顺序进行调度。例如,写入请求246可以是将128字节的数据存储到存储器设备225中的一者的请求。然而,写入请求244和245可各自是存储32字节的数据的请求,因此仲裁电路212将这些请求调度在写入请求246之后。由于写入请求244和245针对等量的数据,仲裁电路212可以使用其他标准来选择这两个请求的顺序。例如,写入请求244可将位置寻址在存储器设备225中的与存储器请求246不同的位置,并且因此可被调度成与写入请求246同时执行。另外,仲裁电路212可基于存储器控制器电路210接收两个请求的顺序而将写入请求244调度在写入请求245之前。
为了执行存储器请求,存储器控制器电路210将对应于每个请求的一个或多个存储器命令发送到存储器电路220。存储器电路220执行对应于已调度的读取请求和写入请求的存储器命令。存储器控制器电路210经由通信总线280和总线时钟282将存储器命令发送到存储器电路220。存储器控制器电路210利用总线时钟282来控制存储器命令到存储器电路220的流。总线时钟228的多个周期(为简明起见,在本文中称为“时钟周期”)在发起特定存储器请求的执行与所生成的存储器命令实现存储器请求的时间之间发生。一些存储器请求的执行可包括用于实现特定存储器请求的单独存储器命令之间的空闲时钟周期。取决于在指令队列230中等待的存储器请求,可在这些另外空闲的时钟周期中的一些或全部期间执行其他存储器命令。存储器控制器电路210的效率可基于主动用于执行存储器命令的时钟周期相对于在特定时间量内发生的时钟周期的总数的比率或百分比来确定。
需注意,图2的实施方案仅仅是用于演示所公开概念的示例。为清楚起见,选择所示数量的读取请求和写入请求。在其他实施方案中,任何合适数量的读取请求和写入请求可包括在指令队列和写入请求队列中。
重新参考图1的描述,存储器控制器电路确定表示存储器控制器的效率的值。在一些实施方案中,该效率可由在特定时间量内执行的存储器命令的数量确定。
转到图3,在用于确定效率的示例中,示出了已调度请求缓冲区的实施方案以及描绘存储器命令执行相对于时间的图表。在各种实施方案中,已调度请求缓冲区330可对应于图1中的已调度请求缓冲区130,或对应于图2中的指令队列230。如图所示,已调度请求缓冲区330包括当前填充有八个相应存储器请求331-338的八个条目。存储器请求331-338中的每一者是读取请求(由字母“R”指示)或写入请求(由字母“W”指示)。此外,包括存储器页面指示符,其指示相应请求访问多个存储器页面(p1-p5)中的哪个存储器页面。例如,存储器请求333是针对存储器页面2中的位置处的信息的读取请求。
如图所示,图表300描绘了用于执行对应于存储器请求331-338的存储器命令的时间线。时钟信号315对应于图1中的时钟信号115,并且向执行存储器请求331-338的存储器控制器(例如,存储器控制器电路110)提供定时参考。执行信号317指示存储器控制器电路110和存储器电路(诸如存储器电路120)之间的命令接口中的活动。高信号指示存储器命令何时被主动执行,并且低信号指示命令接口何时空闲。需注意,当命令接口空闲时,存储器控制器和存储器电路中的电路可主动执行或以其他方式处理各种存储器请求和命令。若干字母与执行信号317一起使用以指示正被执行的存储器命令的类型。“a”指示用于为一个或多个后续读取命令或写入命令准备相应存储器页面的激活命令。“r”指示用于从已激活存储器页面读取一个或多个字节的信息的读取命令。类似地,“w”指示用于将一个或多个字节的信息写入已激活页面的写入命令。
如前所述,存储器控制器通过向存储器电路发出一个或多个存储器命令来执行存储器请求,该存储器电路然后执行单独存储器命令,由此实现对应的存储器请求。参见图3,在时间t1,通过执行用于存储器页面1的页面激活命令来发起存储器请求331。如图所示,存储器电路利用时钟信号315的若干周期直到时间t2,此时可读取来自页面1的信息并将其发送到存储器控制器。通过在时间t2执行读取命令来实现存储器请求331。此外,执行第二读取命令以实现访问相同存储器页面上的信息的存储器请求332。到时间t3时,存储器请求333和334已被实现。为了简洁起见,省略了对用于实现存储器请求333和334的存储器命令的描述。在时间t3,通过执行页面4的激活命令来发起存储器请求335,并且随后读取时钟信号315的若干周期的信息。
如图所示,存储器电路120针对读取命令被配置为读取状态或针对写入命令被配置为写入状态,并且时钟信号315的若干周期用于将存储器电路120从读取状态重新配置为写入状态。在该转变期间,不向存储器电路120发出存储器读取、写入和激活命令。在时间t4与时间t5之间,执行读取状态到写入状态的转变。该读取至写入转变可结束包括存储器请求331-335的读取序列,并且为包括存储器请求336-338的写入序列准备存储器电路120。
在时间t5,存储器电路120处于写入状态并且执行存储器页面激活以为写入命令准备页面3。时钟信号315的若干周期后,在时间t6,页面3准备好接收数据作为存储器请求336的一部分。如图所示,存储器电路120的写入命令可不同于读取命令。虽然读取命令可读取已激活页面上的存储器位置的子集,但在一些实施方案中,写入命令可写入激活页面上的所有位置。因此,由于更多信息从存储器控制器电路110发送到存储器电路120,因此写入命令可消耗更多时间来完成。
在请求336完成之后,存储器控制器电路110和存储器电路120可继续实现存储器请求337和338。存储器控制器电路110可响应于读取序列和写入序列的完成而确定当前存储器访问效率。当前存储器访问效率基于用于处理存储器请求的时钟周期与在完成的读取序列和写入序列期间发生的总时钟周期的比率来确定。例如,特定读取序列可包括48个读取请求并且后续写入序列可包括16个写入请求。实现这64个存储器请求可花费时钟信号315的150个周期。在这150个周期期间,执行信号317可指示持续45个周期的活动,导致0.30%的比率或30%的当前存储器访问效率。存储器控制器电路110可包括指定存储器访问效率,该指定存储器访问效率在存储器控制器电路110的设计期间设置,或者由软件(诸如在包括存储器控制器电路110的计算机系统中执行的操作系统)设置。将30%的当前存储器访问效率值与该指定存储器访问效率值(例如,90%)进行比较,由此确定存储器控制器电路110在指定目标下操作。基于该比较,存储器控制器电路110可修改用于未来存储器请求序列的一种或多种技术。例如,存储器控制器电路110可修改包括在后续存储器请求序列中的存储器请求的数量。在本公开中稍后提供了附加细节。
需注意,图3的实施方案为示例。图3被简化以清楚地公开实施方案的特征。在其他实施方案中,可执行附加命令以实现读取请求或写入请求。在一些实施方案中,存储器命令的顺序可不同。用于完成特定存储器命令的时钟周期的数量可不同于图3所示的数量。
在图3的描述中,存储器控制器被公开为响应于当前存储器访问效率与指定存储器访问效率的比较而调整包括在后续存储器请求序列中的存储器请求的数量。转到图4,表示已调度请求缓冲区的若干表用于示出此类调整的示例。已调度请求缓冲区430a描绘了在第一时间点的已调度请求缓冲区(诸如图1中的已调度请求缓冲区130)的状态。已调度请求缓冲区430b和430c描绘了响应于当前存储器访问效率的两个不同值431b和431c的稍后时间点的已调度请求缓冲区的可能状态。
已调度请求缓冲区430a描绘了具有读取序列和写入序列的已调度请求缓冲区的状态,该读取序列和写入序列各自具有32个相应存储器请求。一旦在读取序列和写入序列结束时执行已调度请求,存储器控制器电路(诸如图1中的存储器控制器电路110)就确定当前存储器访问效率,如上所述。存储器控制器电路110可基于当前存储器访问效率与指定存储器访问效率的比较来修改要在后续读取序列和写入序列中执行的存储器请求的数量。
作为第一示例,存储器控制器电路110为当前存储器访问效率431b确定60%的值。如果指定存储器访问效率为85%,则存储器控制器电路110可调整包括在后续读取序列和写入序列中的存储器请求的数量。如果读取请求正在访问单个存储器设备上的一个或两个存储器组上的不同存储器页面,则这种情况可能发生,由此限制可同时执行的读取请求的数量。相比之下,排队的写入请求可跨越各种存储器设备,由此实现多个写入请求的并发执行。如已调度请求缓冲区430b中所示,存储器控制器电路110将读取序列中的读取请求的数量减小到20,并且将写入序列中的写入请求的数量增加到40。需注意,除了修改读取序列和写入序列中的每一者中的请求的数量之外,还针对组合的存储器请求序列修改存储器请求的总数。
在第二示例中,存储器控制器电路110为当前存储器访问效率431c确定95%的值。假设相同的指定存储器访问效率为85%,则存储器控制器电路110可再次调整读取序列和写入序列中的每一者中的存储器请求的数量。假设如前所述的读取请求和写入请求的类似组合,则存储器控制器电路110将读取序列中的读取请求的数量增加到48,并且将写入序列中的写入请求的数量减小到16。由于存储器访问效率431c的较高值,存储器控制器电路110具有执行读取请求中的具有被同时执行的有限机会的一些读取请求的裕度。通过跟踪当前存储器访问效率并与指定存储器访问效率进行比较,存储器控制器电路可修改读取序列和写入序列中的存储器请求的数量以获得指定效率。
需注意,图4中的描绘仅仅为示例。在其他实施方案中,不同数量的存储器请求可包括在读取序列和写入序列中。虽然仅示出了读取请求和写入请求,但在其他实施方案中,可包括其他类型的存储器请求,诸如部分读取请求。
现在转到图5,示出了调度读取-修改-写入存储器请求的示例。已调度请求缓冲区530可对应于图1中的已调度请求缓冲区130,或对应于图2中的指令队列230。已调度请求缓冲区530被示为具有当前填充有三个相应存储器请求531-533的三个条目。存储器请求531是针对存储器页面1(p1)的读取请求(R)。存储器请求533是针对存储器页面4(p4)的写入请求(W)。此外,存储器请求532是针对页面3(p3)的部分读取(即,读取-修改-写入)请求(RMW)。共同参考图1和已调度请求缓冲区530,根据图表500的时间线来执行三个存储器请求531-533。
如图所示,图表500描绘了用于执行对应于三个存储器请求531-533的存储器命令的时间线。时钟信号515对应于时钟信号115,并且向存储器控制器电路110提供定时基准。执行信号517指示存储器控制器电路110和存储器电路120之间的命令接口中的活动。信号的高部分指示存储器命令何时被主动执行,并且信号的低部分指示命令接口何时空闲。类似于图3中的图表300,若干字母与执行信号317一起使用以指示正被执行的存储器命令的类型。“a”指示用于为一个或多个后续读取命令或写入命令准备相应存储器页面的激活命令。“r”指示用于从已激活存储器页面读取一个或多个字节的信息的读取命令。类似地,“w”指示用于将一个或多个字节的信息写入已激活页面的写入命令。
如图所示,读取请求531是读取序列中的最后读取请求,并且写入请求533是后续写入序列中的第一写入请求。存储器控制器电路110调度要在读取序列的结束与写入序列的开始之间执行的部分写入请求532。部分写入请求是一种类型的读取-修改-写入请求,其包括从指定页面读取信息,(如有必要)修改来自指定页面的一些或所有数据,以及然后将已修改数据写回指定页面。由于执行读取命令和写入命令两者以实现这种类型的存储器请求,因此在读取命令和写入命令之间执行读取至写入转变。如下所述,在读取序列和写入序列之间调度读取-修改-写入请求可允许存储器电路120避免特别为了读取-修改-写入请求而执行读取至写入转变。
在时间t1和t2之间,执行两个存储器命令、页面激活命令和读取命令以实现读取请求531。在时间t2和t3之间,执行页面激活命令和读取命令以实现存储器请求532的读取部分,从而导致指定页面3由存储器控制器电路110读取。在读取来自页面3的数据之后,存储器控制器电路110从时间t3到时间t4发起存储器电路120的读取至写入转变。在转变时间期间,存储器控制器电路110可对来自页面3的数据进行任何必要改变,如在存储器请求532中指定的。在存储器电路120处于写入状态之后,在时间t4和t5之间实现存储器请求532的写入部分。由于存储器电路120现在处于写入状态,因此写入请求533可在时间t5开始,而无需另外的状态转变。
需注意,如果在读取序列期间调度读取-修改-写入请求532,则在请求532被实现之后将需要写入至读取转变,从而使存储器电路120返回读取状态以完成读取序列。同样,如果在写入序列期间调度读取-修改-写入请求532,则在请求532开始之前将需要写入至读取转变,从而为了请求的第一读取部分而将存储器电路120置于读取状态。
还需注意,图5为用于演示所公开概念的示例。为清楚起见,图表500中的时间线被简化。在其他实施方案中,在所示活动期间和之间可发生任何合适数量的时钟周期。
上文已呈现了与存储器请求的调度和执行相关的电路和图表。现在呈现用于操作此类电路的两种方法。
现在转向图6,示出了用于在存储器控制器中管理存储器请求的方法的实施方案的流程图。方法600可应用于存储器控制器电路,诸如图1中的存储器控制器电路110或图2中的存储器控制器电路210。共同参考图1和图6的流程图,方法可在框601中开始。
存储器控制器接收访问存储器电路的存储器请求(框602)。存储器控制器(例如,存储器控制器电路110)从包括存储器控制器电路110和存储器电路120的计算系统内的一个或多个处理电路接收存储器请求。处理电路可发出从存储器电路120检索信息的存储器请求,该信息为例如当前在计算系统中的处理电路中执行的应用程序或其他软件过程的程序代码的指令或操作数。在其他情况下,处理电路可发出将信息存储到存储器电路120中以供稍后使用的存储器请求。如图1所示,存储器控制器110包括写入请求队列和已调度请求缓冲区。
存储器控制器根据存储器请求是读取请求还是写入请求来处理存储器请求(框604)。存储器控制器电路110确定存储器请求包括读取请求还是写入请求。在一些实施方案中,可接收附加类型的存储器请求,诸如读取-修改-写入命令。存储器访问可采用时钟信号(例如,时钟信号115)的若干周期,并且因此,存储器控制器电路110可被配置为以这种方式调度所接收的存储器请求以便以有效速率实现存储器请求。由于读取请求可包括对应用程序的指令或操作数的请求,因此实现此类读取请求的速度可对计算系统的用户所感知的计算系统性能具有直接影响。因此,调度读取请求可以优先于调度写入请求。所接收的读取请求可作为读取序列的一部分被调度在已调度请求缓冲区130内的一组其他读取请求内。写入请求可具有比读取请求更低的优先级,因为写入请求可能不在代码执行的关键路径中。因此,存储器控制器电路110可将所接收的写入请求存储在写入请求队列140中。
存储器控制器确定表示执行存储器请求的存储器控制器的当前效率的效率值(框606)。在执行多个存储器请求之后,存储器控制器电路110确定与包括在最近读取序列和写入序列中的存储器命令的执行相关联的当前存储器访问效率的值。效率值可基于活动时钟周期与总线时钟282的总时钟周期的比率来确定(如图2所示,在完成的读取序列和写入序列期间)。活动时钟周期是指总线时钟282的用于处理存储器请求的周期。周期总数是指总线时钟282的从读取序列的第一请求的执行开始到写入序列的最后请求的完成发生的周期的数量。在其他实施方案中,效率值可基于读取序列和写入序列中的存储器请求的数量除以周期总数。
存储器控制器基于效率值并基于存储在写入请求队列中的写入请求的数量来调度存储器请求(框608)。存储器控制器电路110将当前存储器访问效率的确定值与指定存储器访问效率值进行比较。该指定值可在存储器控制器电路110的设计期间设置,或者可由操作系统或在计算系统上运行的其他软件发送到存储器控制器电路110。存储器控制器电路110在适当的即将到来的读取序列或写入序列内调度存储器请求。对于即将到来的读取序列和写入序列,存储器控制器电路110还可调整要包括在后续读取序列和写入序列中的读取请求的数量和/或写入请求的数量。例如,如果写入请求队列140中的写入请求的数量小于阈值141,则所接收的写入请求被存储在写入请求队列140中而不是被调度以用于处理。另外,如果写入请求队列140中的请求的数量达到阈值141,则可在即将到来的写入序列中调度当前存储在写入请求队列140中的一个或多个写入请求以供执行。
存储器电路执行已调度的读取请求和写入请求(框610)。为了执行已调度存储器请求,存储器控制器电路110将对应于每个请求的一个或多个存储器命令发送到存储器电路120。存储器电路120执行对应于已调度的读取请求和写入请求的存储器命令。方法在框614中结束。
需注意,图6示的方法是用于演示所公开概念的示例。在其他实施方案中,可以不同的顺序执行操作。还可包括附加操作,诸如将写入请求的当前排队数量与阈值数量进行比较。
现在转到图7,示出了流程图,该流程图示出用于由存储器控制器确定和利用效率值的方法的实施方案。类似于上述方法600,方法700可应用于存储器控制器电路,诸如图1中的存储器控制器电路110或图2中的存储器控制器电路210。方法700所公开的操作可结合方法600或作为其一部分来执行。共同参考图1和图7的流程图,方法可在框701中开始。
存储器控制器通过执行已调度数量的连续读取请求来完成读取序列(框702)。如上所述,存储器控制器电路110创建一组接收的读取请求以形成读取序列。以特定顺序执行读取序列的请求,而在读取序列的最后读取请求已完成之前不执行写入请求。特定顺序可包括串行地执行一些读取请求,而可同时执行一些读取请求,诸如并行地执行寻址不同存储器组或不同存储器设备的两个读取请求。
存储器控制器通过执行已调度数量的连续写入请求来完成写入序列(框704)。类似于框702,如上所述,存储器控制器电路110使用已排队至写入请求队列140的写入请求来创建一组写入请求以形成写入序列。与读取序列的请求一样,可以特定顺序执行写入序列的请求,而在写入序列的最后写入请求完成之前不执行读取请求。写入请求的特定顺序还可包括串行地执行一些写入请求,而可同时执行一些写入请求,在适当的情况下。
响应于完成读取序列和写入序列,存储器控制器基于存储器控制器在读取序列和写入序列期间正在执行存储器请求的时间量来确定效率值(框706)。在执行读取序列和后续写入序列的存储器请求之后,存储器控制器电路110确定当前存储器访问效率值。例如,该效率值可基于在执行与读取序列和写入序列中的存储器请求相关联的存储器命令期间发生的时钟信号115的周期在从读取序列的第一请求的执行开始到写入序列的最后请求的完成发生的周期的总数中的百分比。
存储器控制器基于确定值来调整要在后续读取序列和写入序列中执行的存储器请求的数量(框708)。存储器控制器电路110将所确定的当前存储器访问效率值与指定存储器访问效率值进行比较。基于该比较,存储器控制器电路110可调整在后续读取序列和写入序列中调度的读取请求和/或写入请求的数量。在一些情况下,读取序列中的读取请求的数量或写入序列中的写入请求的数量(但不是两者)可以是零。方法在框710中结束。
需注意,方法700是涉及管理存储器请求的一个示例。在其他实施方案中,可以不同顺序执行操作。一些实施方案可包括附加操作,诸如包括读取序列和写入序列之间的读取至写入转变。
在图8中示出了计算机系统诸如片上系统(SoC)的实施方案的框图。计算机系统800可表示包括存储器控制器电路和存储器电路并且利用上文所公开的概念的系统。在各种实施方案中,计算机系统800可以是在包括多个集成电路的一个或多个电路板上实现的系统,或者可以是集成到单个计算机芯片上的SoC,或者可被实现为它们的组合。计算机系统800包括若干处理内核(包括内核801)、图形处理器802和系统外围设备803,其全部耦接到存储器高速缓存控制器805。存储器高速缓存控制器805耦接到高速缓存存储器806和存储器控制器电路808。存储器控制器电路808耦接到存储器810a-810c。存储器控制器808和存储器810a-810c共同形成存储器系统820,在一些实施方案中,该存储器系统对应于图1中的存储器系统100。
在所示的实施方案中,内核801表示执行计算操作的通用处理内核。尽管示出了单个处理内核(即内核801),但在一些实施方案中,内核801可对应于包括任何合适数量的处理内核的内核复合体。在各种实施方案中,内核801可实现任何适当指令集架构(ISA),诸如ARMTM、或x86ISA或它们的组合。内核801可通过发出存储器事务以获取要利用的指令和数据来执行指令并利用存储在位于计算机系统800外部的存储器(诸如存储器810a-810c)中的数据。从存储器810a-810c获取的数据和指令可被高速缓存在高速缓存存储器806中。在一些实施方案中,除高速缓存存储器806之外,内核801还可包括一个或多个高速缓存存储器。
在所示的实施方案中,图形处理器802包括用于处理要发送到显示屏(未示出)的图像或视频的电路。在一些实施方案中,待由图形处理器802处理的图像和/或视频可存储在存储器810a-810c中。存储器810a-810c还可存储供图形处理器802用来生成图像的图形处理指令。图形处理器802可对应于能够发出存储器事务以检索图形数据和指令的处理内核。从存储器810a-810c检索的数据可被高速缓存在高速缓存存储器806中。
在所识别的实施方案中,系统外围设备803包括用于执行任何数量的合适任务的一个或多个电路块。例如,在各种实施方案中,系统外围设备803可包括通信外围设备(例如,通用串行总线(USB)、以太网)、加密引擎、音频处理器、直接存储器访问模块、或可生成存储器事务以从存储器810a-810c检索数据或命令的任何其他外围设备中的任何一者或多者。系统外围设备803可包括各种功能电路内的能够向存储器高速缓存控制器805发出存储器事务的一个或多个处理内核。
在所示的实施方案中,存储器高速缓存控制器805包括用于管理由内核801、图形处理器802和系统外围设备803发出的存储器事务的电路。在所示的实施方案中,存储器高速缓存控制器805对存储器事务进行解码,转换地址,并且确定对应于寻址位置的有效内容当前是否在高速缓存存储器806中,或者该数据是否要从存储器810a-810c或其他地方获取。如果有效内容当前未缓存在高速缓存存储器806中,则存储器高速缓存控制器805可将事务发送到存储器控制器电路808以获取所请求的数据。在一些实施方案中,计算机系统800可包括多于一个高速缓存存储器806,并且因此可包括针对每个高速缓存存储器806的相应存储器高速缓存控制器805。
在一些实施方案中,存储器控制器电路808可对应于图1中的存储器高速缓存控制器110。存储器控制器电路808可包括用于实现来自存储器810a-c中的每一者的存储器事务的一个或多个存储器控制器电路。例如,针对存储器810a-810c中的每一者可包括一个存储器控制器电路。在所示的实施方案中,存储器控制器电路808包括用于将数据读写到存储器810a-810c中的每一者的电路。如果对应于事务地址的有效内容当前未存储在高速缓存存储器806中,则存储器控制器电路808从存储器高速缓存控制器805接收存储器事务。
存储器810a-810c是共同形成存储计算机系统800的数据和指令的存储器分级结构的至少一部分的存储设备。更具体地讲,存储器810a-810c可对应于易失性存储器,其访问时间小于非易失性存储器设备的访问时间。因此,存储器810a-810c可用于在计算机系统800的系统启动之后存储对应于从非易失性存储器读取的操作系统和一个或多个应用程序的指令和数据。存储器810a-810c可表示动态随机存取存储器(DRAM)系列的存储器设备中或静态随机存取存储器(SRAM)系列的存储器设备中的存储器设备,或在一些实施方案中表示它们的组合。
还需注意,为提高清晰度并有助于演示所公开的概念,图8所示的计算机系统800的框图已被简化。在其他实施方案中,不同和/或附加的电路框和这些电路框的不同配置是可能的并进行了设想。
图9是示出根据一些实施方案的存储电路设计信息的非暂态计算机可读存储介质的示例的框图。图9的实施方案可在用于设计和制造集成电路诸如例如包括图8的计算机系统800的IC的工艺中使用。在所示的实施方案中,半导体制造系统920被配置为处理存储在非暂态计算机可读存储介质910上的设计信息915并基于设计信息915制造集成电路930。
非暂态计算机可读存储介质910可以包括各种适当类型的存储器设备或存储设备中的任一个。非暂态计算机可读存储介质910可以是安装介质,例如CD-ROM、软盘或磁带设备;计算机系统存储器或随机存取存储器诸如DRAM、DDR RAM、SRAM、EDO RAM、Rambus RAM等;非易失性存储器诸如闪存、磁介质,例如,硬盘驱动器或光学存储装置;寄存器,或其他类似类型的存储器元件等。非暂态计算机可读存储介质910还可以包括其他类型的非暂态存储器或它们的组合。非暂态计算机可读存储介质910可以包括可驻留在不同位置例如通过网络连接的不同计算机系统中的两个或更多个存储器介质。
设计信息915可使用各种适当的计算机语言中的任何语言来指定,包括硬件描述语言诸如但不限于:VHDL、Verilog、SystemC、SystemVerilog、RHDL、M、MyHDL等。设计信息915可以能够被半导体制造系统920用来制造集成电路930的至少一部分。设计信息915的格式可被至少一个半导体制造系统(诸如半导体制造系统920)识别。在一些实施方案中,设计信息915可包括指定单元库的元素以及其连接性的网表。在包括在集成电路930中的电路的逻辑合成期间使用的一个或多个单元库也可被包括在设计信息915中。此类单元库可包括指示被包括在单元库中的单元的设备或晶体管级网表、掩模设计数据、表征数据等的信息。
在各种实施方案中,集成电路930可以包括一个或多个定制宏单元,例如存储器、模拟或混合信号电路等。在这种情况下,设计信息915可以包括与包括的宏单元相关的信息。此类信息可以包括但不限于电路图捕获数据库、掩模设计数据、行为模型以及设备或晶体管级网表。如本文所用,掩模设计数据可以根据图形数据系统(暂态)或任何其他合适的格式来格式化。
半导体制造系统920可以包括被配置为制造集成电路的各种适当元件中的任何元件。这可包括例如用于(例如在可包括掩膜的晶片上)沉积半导体材料、移除材料、改变所沉积材料的形状、(例如通过掺杂材料或使用紫外处理来修改介电常数)对材料进行改性等的元件。半导体制造系统920还可被配置为针对正确操作执行所制造电路的各种测试。
在各种实施方案中,集成电路930被配置为根据设计信息915指定的电路设计来操作,这可包括执行本文所述的功能性中的任何功能性。例如,集成电路930可包括所示或本文所述各种元件中的任何元件。另外,集成电路930可以被配置为执行本文结合其他部件所述的各种功能。另外,本文所述的功能性可由多个连接的集成电路来执行。
如本文所用,形式为“指定被配置为…的电路的设计的设计信息”的短语并不暗示为了满足该要素就必须制造所涉及的电路。相反,该短语表明设计信息描述了一种电路,该电路在被制造时将被配置为执行所指示的动作或者将包括所指定的部件。
尽管上文已经描述了具体实施方案,但这些实施方案并非要限制本公开的范围,即使仅相对于特定特征描述单个实施方案的情况下也是如此。本公开中提供的特征示例意在进行例示,而非限制,除非做出不同表述。上述说明书意在涵盖此类替代形式、修改形式和等价形式,这对知晓本公开有效效果的本领域技术人员将是显而易见的。
本公开的范围包括本文(明确或暗示)公开的任意特征或特征的组合或其任意概括,而无论其是否减轻本文解决的任何或所有问题。因此,在本专利申请(或要求享有其优先权的专利申请)进行期间可针对特征的任何此类组合作出新的权利要求。具体地,参考所附权利要求书,可将从属权利要求的特征与独立权利要求的特征进行组合,并可通过任何适当的方式而不是仅通过所附权利要求书中所列举的特定组合来组合来自相应独立权利要求的特征。
Claims (20)
1.一种装置,包括:
存储器电路;和
存储器控制器电路,所述存储器控制器电路包括写入请求队列,被配置为:
接收访问所述存储器电路的存储器请求,并且确定所述存储器请求包括读取请求还是写入请求;
调度所接收的读取请求以用于执行;
将所接收的写入请求存储在所述写入请求队列中;以及
基于实现指定存储器访问效率并且基于存储在所述写入请求队列中的写入请求的数量,对已调度的存储器请求进行重新排序。
2.根据权利要求1所述的装置,其中所述存储器控制器电路被进一步配置为响应于读取序列和写入序列的完成而确定当前存储器访问效率,其中读取序列对应于多个读取请求的执行,并且写入序列对应于多个写入请求的执行,并且其中基于在所完成的读取序列和写入序列期间的活动时钟周期与总时钟周期的比率来确定所述当前存储器访问效率,其中活动时钟周期是用于处理存储器请求的时钟周期。
3.根据权利要求2所述的装置,其中所述存储器控制器电路被进一步配置为基于所述当前存储器访问效率与所述指定存储器访问效率的比较来修改要在后续读取序列和写入序列中执行的存储器请求的数量。
4.根据权利要求2所述的装置,其中所述存储器控制器电路被进一步配置为将至少一个部分写入存储器请求调度成要在读取序列和写入序列之间执行。
5.根据权利要求1所述的装置,其中所述存储器控制器电路被进一步配置为响应于确定所述写入请求队列中的写入请求的数量满足请求的阈值数量,调度包括在所述写入请求队列中的写入请求的子集。
6.根据权利要求5所述的装置,其中所述存储器控制器电路被进一步配置为通过将所述多个写入请求调度成要在执行多个读取请求之后执行来使读取请求优先于写入请求。
7.根据权利要求1所述的装置,其中所述存储器控制器电路被进一步配置为响应于确定要由特定写入请求存储的数据量大于要由不同写入请求存储的数据量,使所述特定写入请求优先于所述不同写入请求。
8.一种方法,包括:
由存储器控制器接收访问存储器电路的存储器请求,其中所述存储器控制器包括写入请求队列和已调度请求缓冲区;
由所述存储器控制器根据所述存储器请求是读取请求还是写入请求来处理所述存储器请求;
基于通信总线在执行多个读取请求和多个写入请求期间的活动来确定效率值,其中所述通信总线耦接在所述存储器控制器和至少一个存储器电路之间;
基于所述效率值并基于存储在所述写入请求队列中的写入请求的数量来调度所述存储器请求;以及
由所述存储器电路执行已调度的读取请求和写入请求。
9.根据权利要求8所述的方法,其中所述处理包括响应于所述存储器请求是写入请求而向所述写入请求队列添加。
10.根据权利要求9所述的方法,还包括响应于确定所述写入请求队列中的写入请求的数量大于阈值数量,调度来自所述写入请求队列的多个写入请求以用于执行。
11.根据权利要求8所述的方法,其中所述处理包括响应于所述存储器请求是读取请求而调度所述存储器请求以用于执行。
12.根据权利要求8所述的方法,还包括:
通过执行已调度数量的连续读取请求来完成读取序列;
通过执行已调度数量的连续写入请求来完成写入序列;以及
响应于完成读取序列和写入序列而确定所述效率值。
13.根据权利要求12所述的方法,还包括基于所确定的效率值来调整要在后续读取序列和写入序列中执行的存储器请求的数量。
14.根据权利要求8所述的方法,还包括基于要由每个写入请求存储在所述存储器电路中的数据量来划分写入请求的优先顺序。
15.一种装置,包括:
系统接口,所述系统接口耦接到至少一个处理器;
指令队列,所述指令队列被配置为在执行之前存储一个或多个存储器请求;
写入请求队列;和
仲裁电路,所述仲裁电路被配置为:
从所述系统接口接收存储器请求,并且确定所述存储器请求包括读取请求还是写入请求;
将所接收的读取请求放置到所述指令队列中;
将所接收的写入请求放置到所述写入请求队列中;以及
基于实现指定水平的存储器访问效率来对放置在所述指令队列中的存储器请求进行重新排序。
16.根据权利要求15所述的装置,其中所述仲裁电路被进一步配置为响应于读取序列和写入序列的完成而确定存储器访问效率的当前水平,其中读取序列对应于多个读取请求的执行,并且写入序列对应于多个写入请求的执行,并且其中基于在所完成的读取序列和写入序列期间发生的用于处理存储器请求的总时钟周期的百分比来确定所述当前水平。
17.根据权利要求16所述的装置,其中所述仲裁电路被进一步配置为基于所述当前水平与所述指定水平的比较来调整要在后续读取序列和写入序列中执行的存储器请求的数量。
18.根据权利要求16所述的装置,其中所述仲裁电路被进一步配置为在所述指令队列中放置要在读取序列和写入序列之间执行的至少一个部分写入存储器请求。
19.根据权利要求15所述的装置,其中所述仲裁电路被进一步配置为响应于确定所述写入请求队列中的写入请求的数量满足请求的阈值数量,在所述指令队列中放置包括在所述写入请求队列中的写入请求的子集,其中已调度的读取请求优先于所述写入请求的子集执行。
20.根据权利要求15所述的装置,其中所述仲裁电路被进一步配置为响应于确定要由特定写入请求存储的数据量大于要由不同写入请求存储的数据量,使所述特定写入请求优先于所述不同写入请求。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/112,624 | 2018-08-24 | ||
US16/112,624 US10678478B2 (en) | 2018-08-24 | 2018-08-24 | Ordering memory requests based on access efficiency |
PCT/US2019/047807 WO2020041649A1 (en) | 2018-08-24 | 2019-08-23 | Ordering memory requests based on access efficiency |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112639752A true CN112639752A (zh) | 2021-04-09 |
Family
ID=67876090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980055787.2A Pending CN112639752A (zh) | 2018-08-24 | 2019-08-23 | 基于访问效率对存储器请求进行排序 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10678478B2 (zh) |
EP (1) | EP3841481A1 (zh) |
KR (1) | KR102519019B1 (zh) |
CN (1) | CN112639752A (zh) |
WO (1) | WO2020041649A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11614889B2 (en) * | 2018-11-29 | 2023-03-28 | Advanced Micro Devices, Inc. | Aggregating commands in a stream based on cache line addresses |
CN114930282A (zh) | 2019-12-26 | 2022-08-19 | 美光科技公司 | 堆叠式存储器系统的真值表扩展 |
US11455098B2 (en) * | 2019-12-26 | 2022-09-27 | Micron Technology, Inc. | Host techniques for stacked memory systems |
CN114846545A (zh) | 2019-12-26 | 2022-08-02 | 美光科技公司 | 用于堆叠式存储器系统的非确定性操作的技术 |
CN113778317A (zh) * | 2020-06-10 | 2021-12-10 | 慧荣科技股份有限公司 | 计算机可读取存储介质、调度主机命令的方法及装置 |
KR102496994B1 (ko) * | 2021-03-23 | 2023-02-09 | 에스케이하이닉스 주식회사 | PCIe 인터페이스 장치 및 그 동작 방법 |
KR102529761B1 (ko) | 2021-03-18 | 2023-05-09 | 에스케이하이닉스 주식회사 | PCIe 디바이스 및 그 동작 방법 |
US20230236757A1 (en) * | 2022-01-27 | 2023-07-27 | Micron Technology, Inc. | Arbitration policy to prioritize read command dequeuing by delaying write command dequeuing |
US20230266893A1 (en) * | 2022-02-21 | 2023-08-24 | Samsung Electronics Co., Ltd. | Memory system including memory device and memory controller, and operating method thereof |
US20240036736A1 (en) * | 2022-07-29 | 2024-02-01 | Texas Instruments Incorporated | Memory controller with command reordering |
CN115840542B (zh) * | 2023-02-24 | 2023-06-02 | 浪潮电子信息产业股份有限公司 | 一种硬盘的请求处理方法、系统、存储介质和电子设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050172084A1 (en) * | 2004-01-30 | 2005-08-04 | Jeddeloh Joseph M. | Buffer control system and method for a memory system having memory request buffers |
US20060259717A1 (en) * | 2002-12-05 | 2006-11-16 | Imagination Technologies Limited | SIMD process with multi-port memory unit |
CN101213533A (zh) * | 2005-05-04 | 2008-07-02 | Nxp股份有限公司 | 存储器控制器、控制存储器存取的方法以及包括存储器控制器的系统 |
US20080162799A1 (en) * | 2006-12-28 | 2008-07-03 | Bryan Spry | Mechanism for write optimization to a memory device |
US7596647B1 (en) * | 2006-09-18 | 2009-09-29 | Nvidia Corporation | Urgency based arbiter |
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN104737144A (zh) * | 2012-10-25 | 2015-06-24 | 德州仪器公司 | 存储器存取的动态优先级管理 |
US9069489B1 (en) * | 2010-03-29 | 2015-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic random access memory front end |
CN107078747A (zh) * | 2014-09-04 | 2017-08-18 | 美国国家仪器有限公司 | 具有预配置的存储器仲裁的流水线分层ldpc解码 |
US20180232311A1 (en) * | 2017-02-13 | 2018-08-16 | Intel Corporation | Write congestion aware bypass for non-volatile memory, last level cache |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE60026908D1 (de) | 2000-07-05 | 2006-05-18 | St Microelectronics Srl | Arbitrierungsverfahren und Schaltungsarchitektur dazu |
US7579683B1 (en) * | 2004-06-29 | 2009-08-25 | National Semiconductor Corporation | Memory interface optimized for stacked configurations |
US8812889B2 (en) | 2010-05-05 | 2014-08-19 | Broadcom Corporation | Memory power manager |
US8510521B2 (en) * | 2010-09-16 | 2013-08-13 | Apple Inc. | Reordering in the memory controller |
KR102515924B1 (ko) | 2016-04-19 | 2023-03-30 | 에스케이하이닉스 주식회사 | 미디어 컨트롤러 및 이를 포함한 데이터 저장 장치 |
KR102238652B1 (ko) * | 2014-11-12 | 2021-04-09 | 삼성전자주식회사 | 데이터 저장 장치, 이의 작동 방법, 및 이를 포함하는 데이터 처리 시스템의 작동 방법 |
US20170075812A1 (en) | 2015-09-16 | 2017-03-16 | Intel Corporation | Technologies for managing a dynamic read cache of a solid state drive |
KR20180069960A (ko) * | 2016-12-15 | 2018-06-26 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
US10740042B2 (en) * | 2016-12-30 | 2020-08-11 | Western Digital Technologies, Inc. | Scheduling access commands for data storage devices |
KR102605609B1 (ko) * | 2018-04-02 | 2023-11-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
-
2018
- 2018-08-24 US US16/112,624 patent/US10678478B2/en active Active
-
2019
- 2019-08-23 EP EP19765586.3A patent/EP3841481A1/en active Pending
- 2019-08-23 CN CN201980055787.2A patent/CN112639752A/zh active Pending
- 2019-08-23 KR KR1020217005114A patent/KR102519019B1/ko active IP Right Grant
- 2019-08-23 WO PCT/US2019/047807 patent/WO2020041649A1/en unknown
-
2020
- 2020-06-08 US US16/896,027 patent/US11403037B2/en active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060259717A1 (en) * | 2002-12-05 | 2006-11-16 | Imagination Technologies Limited | SIMD process with multi-port memory unit |
US20050172084A1 (en) * | 2004-01-30 | 2005-08-04 | Jeddeloh Joseph M. | Buffer control system and method for a memory system having memory request buffers |
CN101213533A (zh) * | 2005-05-04 | 2008-07-02 | Nxp股份有限公司 | 存储器控制器、控制存储器存取的方法以及包括存储器控制器的系统 |
US7596647B1 (en) * | 2006-09-18 | 2009-09-29 | Nvidia Corporation | Urgency based arbiter |
US20080162799A1 (en) * | 2006-12-28 | 2008-07-03 | Bryan Spry | Mechanism for write optimization to a memory device |
US9069489B1 (en) * | 2010-03-29 | 2015-06-30 | Marvell Israel (M.I.S.L) Ltd. | Dynamic random access memory front end |
US20120036509A1 (en) * | 2010-08-06 | 2012-02-09 | Sonics, Inc | Apparatus and methods to concurrently perform per-thread as well as per-tag memory access scheduling within a thread and across two or more threads |
CN104737144A (zh) * | 2012-10-25 | 2015-06-24 | 德州仪器公司 | 存储器存取的动态优先级管理 |
CN107078747A (zh) * | 2014-09-04 | 2017-08-18 | 美国国家仪器有限公司 | 具有预配置的存储器仲裁的流水线分层ldpc解码 |
US20180232311A1 (en) * | 2017-02-13 | 2018-08-16 | Intel Corporation | Write congestion aware bypass for non-volatile memory, last level cache |
Also Published As
Publication number | Publication date |
---|---|
KR20210032504A (ko) | 2021-03-24 |
WO2020041649A1 (en) | 2020-02-27 |
EP3841481A1 (en) | 2021-06-30 |
US20200301615A1 (en) | 2020-09-24 |
KR102519019B1 (ko) | 2023-04-06 |
US10678478B2 (en) | 2020-06-09 |
US20200065028A1 (en) | 2020-02-27 |
US11403037B2 (en) | 2022-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11403037B2 (en) | Ordering memory requests based on access efficiency | |
CN109564556B (zh) | 具有条纹和读取/写入事务管理的存储器控制器仲裁器 | |
US9639280B2 (en) | Ordering memory commands in a computer system | |
CN107924375B (zh) | 用于高速存储器接口的命令仲裁 | |
US8560796B2 (en) | Scheduling memory access requests using predicted memory timing and state information | |
US11100013B2 (en) | Scheduling of read and write memory access requests | |
US20210073152A1 (en) | Dynamic page state aware scheduling of read/write burst transactions | |
US10783104B2 (en) | Memory request management system | |
US10817219B2 (en) | Memory access scheduling using a linked list | |
US7761682B2 (en) | Memory controller operating in a system with a variable system clock | |
CN112088368B (zh) | 动态的每存储体和全存储体刷新 | |
US10572389B2 (en) | Cache control aware memory controller | |
US9489321B2 (en) | Scheduling memory accesses using an efficient row burst value | |
US20230031595A1 (en) | Memory controller with a plurality of command sub-queues and corresponding arbiters | |
CN117083588A (zh) | 仲裁期间写入存储体组掩码 | |
US10417146B1 (en) | Real-time resource handling in resource retry queue | |
US20240126457A1 (en) | Dynamic Allocation of Cache Memory as RAM | |
US11893413B2 (en) | Virtual channel support using write table | |
US20240095194A1 (en) | Read Arbiter Circuit with Dual Memory Rank Support | |
US20240094917A1 (en) | Write Arbiter Circuit with Per-Rank Allocation Override Mode | |
US10922232B1 (en) | Using cache memory as RAM with external access support | |
US11704245B2 (en) | Dynamic allocation of cache memory as RAM |
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 |