CN101847131A - 存储器控制装置 - Google Patents
存储器控制装置 Download PDFInfo
- Publication number
- CN101847131A CN101847131A CN201010139057.1A CN201010139057A CN101847131A CN 101847131 A CN101847131 A CN 101847131A CN 201010139057 A CN201010139057 A CN 201010139057A CN 101847131 A CN101847131 A CN 101847131A
- Authority
- CN
- China
- Prior art keywords
- order
- generating unit
- request
- information
- memory
- 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
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/1668—Details of memory controller
- G06F13/1689—Synchronisation and timing concerns
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
Abstract
本发明提供了一种存储器控制装置,其包括:请求生成部;行选择信息保持部;列选择信息保持部;存储体信息管理部;命令生成部;以及命令排列部。
Description
相关申请的参考
本申请包含于2009年3月27日向日本专利局提交的日本优先权专利申请JP2009-078275所披露的主题,其全部内容结合于此作为参考。
技术领域
本发明涉及存储器控制装置,具体地说,本发明涉及同时生成多个命令的存储器控制装置。
背景技术
传统上,已经将为DRAM(动态随机存取存储器)生成命令同时以与DRAM的存储器时钟相同的频率来操作的存储器控制器用作对DRAM的存取进行控制的存储器控制器。近来,由于算术处理装置中的存储器时钟速度的提高,因此期望以低于存储器时钟频率的频率生成命令的存储器控制器。作为该存储器控制器,已经提出一种发布控制信号的2N(N为2以上的整数)个相的存储器控制器,其为DRAM提供命令同时以存储器时钟频率的1/2N来进行操作(例如,参见日本专利公开第2008-225775号(图1))。该存储器控制器发布指定DRAM的操作的控制信号的2N个相,同时以频率存储器时钟的频率的1/2N操作,并将控制信号转换为存储器接口电路中的一个相。
发明内容
至此,上面描述的现有技术通过发布N组两相控制信号,能够以存储器时钟频率的1/2N来操作存储器控制器。然而,这样的存储器控制器在两相控制信号的第一相或第二相中生成NOP(空操作)命令。从而,当将两相控制信号转换为一相时,在两个周期中生成一个NOP命令,因此不能连续地发布用于改变DRAM状态的三个以上的命令。与为DRAM生成命令同时以与DRAM的存储器时钟频率相同的频率来进行操作的存储器控制器相比,这会导致命令发布延迟的问题。
因此,考虑到这样的情形,作出了本发明,并期望以低于存储器时钟频率的频率来高效地生成多个命令。
本发明的第一实施方式是一种存储器控制装置,包括:请求生成部,被配置为从对各个存储体(memory bank)中受控的存储器的数据存取请求中生成存储器请求;以及行选择信息保持部,被配置为将存储器请求中的多个操作码(opcode)、指定存储体的存储体号码、和指定存储体中行地址的行地址作为行选择信息来保持,同时维持存储器请求的输入顺序。该装置还包括列选择信息保持部,被配置为保持存储器请求中的多个操作码、存储体号码、指定存储体中列地址的列地址、和根据存储器请求所要被存取的数据的数据长度作为列选择信息,同时维持存储器请求的输入顺序。该装置还包括:存储体信息管理部,被配置为将存储器的操作状态作为各个存储体的存储体信息来管理;命令生成部,被配置为基于行选择信息、列选择信息、以及存储体信息以低于存储器的存储器时钟频率的频率生成指定与存储体有关的操作的多个命令;以及命令排列部,被配置为同步于存储器时钟排列多个所生成的命令。这会产生以低于存储器时钟频率的频率生成指定与存储体有关的操作的多个命令的效果。
此外,在第一实施方式中,命令生成部可以以存储器时钟频率的1/N,生成N(N是2以上的整数)个命令。这会产生以存储器时钟频率的1/N生成N个命令的效果。
此外,在第一实施方式中,请求生成部可根据数据存取请求的数据长度,生成以突发长度为单位的存储器请求。这会产生以突发长度为单位生成存储器请求的效果。
此外,在第一实施方式中,当在行选择信息保持部和列选择信息保持部中均存在空位时,请求生成部可将新的存储器请求输入至行选择信息保持部和列选择信息保持部。这会产生当在行选择信息保持部和列选择信息保持部中均存在空位时,新的存储器请求输入至行选择信息保持部和列选择信息保持部的效果。
此外,在第一实施方式中,行选择信息保持部可通过对行选择信息执行先入先出操作的队列来形成,并且当命令生成部基于行选择信息生成多个命令中指定行地址的命令时,或者当由行选择信息指定的行地址与存储体中指定为数据存取目标的行地址相一致时,命令生成部可从行选择信息保持部提取由行选择信息保持部保持的行选择信息。这会产生当基于在最前部的行选择信息生成指定行地址的命令时以及当由输入顺序中最旧的行选择信息指定的行地址与存储体中指定为数据存取目标的行地址相一致时,从行选择信息保持部提取输入顺序中最旧的行选择信息的效果。
此外,在第一实施方式中,列选择信息保持部可通过对列选择信息执行先入先出操作队列来形成,并且当命令生成部基于列选择信息生成多个命令中指定列地址的命令时,命令生成部从列选择信息保持部提取由列选择信息保持部保持的列选择信息。这会产生当基于输入顺序中最旧的列选择信息生成指定列地址的命令时,从列选择信息保持部提取输入顺序中最旧的列选择信息的效果。
此外,在第一实施方式中,存储器控制装置还可包括等待信息保持部,被配置为当命令生成部等待生成多个命令中指定行地址的命令时,从行选择信息保持部提取行选择信息并将行选择信息保持为等待行选择信息,并且命令生成部可基于输入顺序中最旧的行选择信息、等待行选择信息、列选择信息以及存储体信息生成命令,其中最旧的行选择信息由行选择信息保持部保持。这会产生基于等待行选择信息、行选择信息、列选择信息以及存储体信息生成命令的效果。
此外,在第一实施方式中,请求生成部为存储器请求提供作为存储器请求顺序的请求标识符,行选择信息保持部可进一步将请求标识符保持为行选择信息,列选择信息保持部可进一步将请求标识符保持为列选择信息来,并且当行选择信息的请求标识符和列选择信息的请求标识符之间的差值大于预定值时,命令生成部可以在多个命令中的另一个命令之前优先生成指定列地址的命令。这会产生当行选择信息的请求标识符和列选择信息的请求标识符之间的差值大于预定值时,在另一个命令之前生成指定列地址的命令的效果。
此外,在第一实施方式中,存储器控制装置还可包括命令同步与输出部,被配置为将命令生成部生成的多个命令以同步的定时输出到命令排列部,同时维持命令生成部的频率。这会产生将命令生成部生成的多个命令以同步的定时输出同时维持命令生成部的频率的效果。
本发明的第二实施方式是一种存储器控制装置,包括:操作指定提供部,被配置为提供用于生成指定关于存储器的操作的命令的操作码、列地址和行地址;以及行选择信息保持部,被配置为将用于生成命令的行地址保持为行选择信息。该装置还包括:列选择信息保持部,被配置为保持操作码和列地址作为列选择信息;以及存储器信息管理部,被配置为管理保持存储器中激活状态的行地址和可生成命令的定时的存储器信息。该装置还包括:命令生成部,被配置为通过基于存储器信息和行选择信息,生成多个命令中从存储体读取对应于行地址的行数据的命令,以及基于存储器信息和列选择信息,生成多个命令中从行数据读取对应于列地址的数据的命令,来以低于存储器的存储器时钟频率的频率生成多个命令;以及命令排列部,被配置为同步于存储器时钟排列多个所生成的命令。这会产生以低于存储器时钟频率的频率生成多个指定与存储器有关的操作的命令的效果。
根据本发明,可以产生能够高效地生成多个命令同时以低于存储器时钟频率的频率进行操作的良好效果。
附图说明
图1是示出了本发明的第一实施方式中的存储器控制装置的构造的第一实例的框图;
图2是本发明的第一实施方式中的SDRAM的状态图;
图3是示出了本发明的第一实施方式中的请求生成部的操作实例的时序图;
图4是示出了本发明的第一实施方式中的由状态管理部管理的存储体信息的实例的列表;
图5是示出了本发明的第一实施方式中被判定为通过命令生成部生成各命令的内容的实例的列表;
图6是示出了本发明的第一实施方式中更新在状态管理部中的存储体信息的实例的列表;
图7是示出了本发明的第一实施方式中的命令确定组块的操作的实例的时序图;
图8A、图8B和图8C是示出了命令生成部的操作的示意图,其操作分别对应于周期T=0至T=2;
图9A、图9B和图9C是示出了命令生成部的操作的示意图,其操作分别对应于周期T=3、T=7、T=8;
图10A和图10B是示出了命令生成部的操作的示意图,其操作分别对应于周期T=10和T=13;
图11是示出了本发明的第一实施方式中的存储器控制器的操作的实例的时序图;
图12是示出了本发明的第二实施方式中的存储器控制装置的构造的实例的框图;
图13A和图13B是分别示出了本发明的第一实施方式和第二实施方式中命令确定组块的操作的实例的时序图;
图14A、图14B和图14C是分别示出了本发明的第二实施方式中的命令生成部在周期T=0至T=2的操作的示意图;
图15A、图15B和图15C是分别示出了本发明的第二实施方式中的命令生成部在周期T=3、T=10、T=19的操作的示意图;
图16A、图16B和图16C是示出了本发明的第一实施方式和第二实施方式中在通过赋予预充电命令PRE优先级避免命令冲突来提高数据读出效率时的命令冲突避免的实例的时序图;
图17A、图17B和图17C是示出了本发明的第一实施方式和第二实施方式中在通过赋予READ优先级避免命令冲突来提高数据读出效率时的命令冲突避免的实例的时序图;
图18是示出了本发明的第三实施方式中的请求生成部的操作的实例的时序图;
图19是示出了本发明的第三实施方式中被判定为通过命令生成部执行命令冲突避免操作的内容实例的列表;
图20是示出了本发明的第三实施方式中在判定预充电命令PRE的发布为优先时的命令生成部的操作的示意图;
图21是示出了本发明的第三实施方式中在判定READ的发布为优先时的命令生成部的操作的示意图。
具体实施方式
下面将描述用于执行本发明的方式(在下文中,将其称为“实施方式”)。将以如下次序进行描述。
1.第一实施方式(DRAM控制:以存储器时钟频率的一半进行操作的存储器控制器的实例)
2.第二实施方式(DRAM控制:具有提取行选择信息并保持行选择信息作为备用行选择信息的H-请求队列的命令确定组块的实例)
3.第三实施方式(DRAM控制:为存储器请求添加请求ID的命令确定模组块的实例)
<1.第一实施方式>
[存储器控制装置的构造的第一实例]
图1是示出了根据本发明的第一实施方式的存储器控制装置100的构造的实例的框图。以下将对以SDRAM(同步DRAM)120的存储器时钟频率的一半同时生成两个命令的存储器控制器200的实例来进行描述。
存储器控制装置100包括存储器控制器200和SDRAM 120。存储器控制器200指定与SDRAM 120有关的操作。存储器控制器200具有命令确定组块300、同步选择器组块220、存储器时钟命令输出组块230、数据缓冲器240以及存储器接口250。
命令确定组块300基于经由信号线109提供的数据存取请求,确定用于指定与SDRAM 120有关的操作的命令。在这种情况下,数据存取请求是用于请求SDRAM 120读取数据和写入数据的信号。命令确定组块300包括请求生成部310、R-请求队列320、C-请求队列330、状态管理部340、命令生成部350、以及命令同步与输出部500。
请求生成部310通过对数据存取请求进行合并和拆分来生成存储器请求。通过将数据存取请求成形为突发长度单位从而指定与SDRAM 120有关的操作,来获得存储器请求。例如,请求生成部310对具有数据长度大于突发长度的数据存取请求进行拆分,并从而生成多个以突发长度为单位的存储器请求。此外,例如,请求生成部310将具有数据长度比突发长度短的连续数据的数据存取请求相互合并,并从而生成以突发长度为单位的存储器请求。当R-请求队列320和C-请求队列330均具有空位时,请求生成部310将所生成的存储器请求经由信号线319提供给R-请求队列320和C-请求队列330。顺便提及,请求生成部310是权利要求中所描述的请求生成部和操作指定提供部的实例。
R-请求队列320保持用于生成指定通过存储器控制器200提供给SDRAM 120的行地址的命令的行选择信息。R-请求队列320保持从请求生成部310提供的存储器请求中的生成指定行地址的命令所需的信息作为行选择信息,同时维持存储器请求的顺序。例如,R-请求队列320由执行先入先出操作的FIFO(先入先出)型的队列形成。在R-请求队列320保持的行选择信息中,输入顺序中最旧的行选择信息(在下文中,将其称为R-请求)输出到命令生成部350。当指定行地址的命令已基于R-请求在命令生成部350中生成时,该R-请求被命令生成部350提取并被删除。此外,当由R-请求指定的存储体的行地址与该存储体中被指定为数据存取目标的行地址相一致时,该R-请求通过被命令生成部350提取而被删除。然后,输入顺序中最旧的行选择信息作为新的R-请求输出到命令生成部350。顺便提及,R-请求队列320是权利要求中所描述的行选择信息保持部的实例。
C-请求队列330保持用于生成指定通过存储器控制器200提供给SDRAM 120的列地址的命令的列选择信息。C-请求队列330保持请求生成部310提供的存储器请求中的生成指定列地址的命令所需的信息作为列选择信息,同时维持存储器请求的顺序。例如,C-请求队列330由执行先入先出操作的FIFO型队列形成。在C-请求队列330保持的列选择信息中,输入顺序中最旧的列选择信息(在下文中,将其称为C-请求)输出到命令生成部350。当指定列地址的命令已基于C-请求在命令生成部350中生成时,该C-请求被命令生成部350提取并被删除。然后,输入顺序中最旧的列选择信息作为新的C-请求输出到命令生成部350。顺便提及,C-请求队列330是权利要求中所描述的列选择信息保持部的实例。
状态管理部340管理指示SDRAM 120的操作状态的存储体信息。例如,该状态管理部340将与存储体中将要被存取的行的状态有关的信息以及与直到命令在各个存储体中变为可发布的等待时间有关的等待时间信息作为各个存储体的存储体信息来进行管理。当在命令生成部350中生成命令时,状态管理部340对与该命令有关的信息(其中该信息包括在存储体信息中)进行更新。此外,状态管理部340具有倒计时的计时器,并通过从存储体信息的等待时间信息的减法来显示命令变成可发布的时间。
例如,状态管理部340在控制器时钟的每个周期中从关于直到命令变为可发布的等待时间的每条等待时间信息中减去N,其中控制器时钟具有命令生成部350的频率。在这种情况下,N表示在命令生成部350中能够同时生成的命令的最大数量。在本实施方式中,将假设能够同时生成命令的最大数量N为“2”进行描述。因而,状态管理部340在控制器时钟的每个周期中从关于直到命令变为可发布的等待时间的等待时间信息中减去2。状态管理部340经由信号线349将存储体信息提供给命令生成部350。顺便提及,状态管理部340是权利要求中所描述的存储体信息管理部和存储器信息管理部的实例。
命令生成部350生成将通过存储器控制器200提供给SDRAM120的命令。命令生成部350基于经由信号线329输入的行选择信息、经由信号线339输入的列选择信息、以及经由信号线349输入的存储体信息,而生成指定与SDRAM 120有关的操作的命令。命令生成部350以低于SDRAM 120的存储器时钟频率的频率生成多个指示与SDRAM 120有关的操作的命令。例如,命令生成部350以存储器时钟频率的1/N生成N个命令。假设在该情况下,命令生成部350以存储器时钟频率的1/2进行操作,并同时生成2个命令作为第一命令和第二命令。命令生成部350经由信号线359和信号线358,将同时生成的第一命令和第二命令提供给命令同步与输出部500。命令生成部350经由信号线357将指示命令已经生成的信息提供给状态管理部340。顺便提及,命令生成部350经由对应于同时生成的命令数量的一组信号线,将命令提供给命令同步与输出部500。顺便提及,命令生成部350可将多个所生成的命令提供给存储器接口250。顺便提及,命令生成部350是权利要求中所描述的命令生成部的实例。
命令同步与输出部500以同步的定时将命令生成部350所提供的多个命令输出,同时维持控制器时钟的频率,其频率是命令生成部350的频率。命令同步与输出部500以同步的定时将多个命令提供给同步选择器组块220。命令同步与输出部500包括第一命令输出部510和第二命令输出部520。顺便提及,命令同步与输出部500包括第一命令输出部510和第二命令输出部520的数量对应于命令生成部350所提供的命令的数量。顺便提及,命令同步与输出部500是权利要求中所描述的命令同步与输出部的实例。
第一命令输出部510暂时保持经由信号线359提供的第一命令。第一命令输出部510被提供有与第二命令输出部520共用的时钟。第一命令输出部510以与时钟同步的定时输出第一命令。第一命令输出部510经由信号线309将频率定时与第二命令同步的第一命令提供给同步选择器组块220。
第二命令输出部520暂时保持经由信号线358提供的第二命令。第二命令输出部520被提供有与第一命令输出部510共用的时钟。第二命令输出部520以与时钟同步的定时输出第二命令。第二命令输出部520经由信号线308将频率时序与第一命令同步的第二命令提供给同步选择器组块220。
同步选择器组块220同步于存储器时钟来对从命令确定组块300所提供的多个命令进行排列。该同步选择器组块220通过以预定的顺序对同时提供的多个命令进行排列,来从频率为存储器时钟频率的1/N的N个命令中,生成与存储器时钟频率相同的命令。同步选择器组块220通过交替地排列命令确定组块300提供的两个命令使得从信号线309提供的第一命令排在第一,而同步于与存储器时钟频率相同的定时生成命令。同步选择器组块220将所生成的命令经由信号线229提供给存储器时钟命令输出组块230。顺便提及,同步选择器组块220是权利要求中所描述的命令排列部的实例。
存储器时钟命令输出组块230输出与存储器时钟频率相同的命令,该命令是由同步选择器组块220同步于存储器时钟的定时提供的。存储器时钟命令输出组块230以与存储器时钟同步的定时将命令提供给存储器接口250。
数据缓冲器240暂时保持将要根据数据存取请求而被读取和写入的数据。当将要根据数据存取请求而被写入到SDRAM 120中的数据经由信号线108提供给数据缓冲器240时,数据缓冲器240以与存储器时钟命令同步的定时将待写入的数据提供给存储器接口250。当数据缓冲器240保持根据数据存取请求从SDRAM 120中读取的数据时,数据缓冲器240经由信号线108将数据输出到发布数据存取请求的装置。
存储器接口250执行存储器控制器200与SDRAM 120之间的数据传输。当将数据写入SDRAM 120时,存储器接口250经由地址/命令总线209和存储器总线208,将命令和数据输出到SDRAM120。当从SDRAM 120读取数据时,存储器接口250经由地址/命令总线209将命令输出到SDRAM 120,并且从而经由存储器总线208接收读取的数据。顺便提及,通过使用具有同步选择器组块220功能的存储器接口250,可以将存储器接口250配置为被提供有多个来自命令生成部350、频率与存储器时钟频率相同的命令。
SDRAM 120是存储装置,其能够通过存储器控制器200指定的操作读取数据和写入数据。SDRAM 120是被称为存储器单元并存储1比特的元件的集合体。SDRAM 120可以形成为包括多个一定数量的存储器单元的集合体,其中集合体被称为存储体。SDRAM120可以是例如用于普通个人计算机的DDR2 SDRAM(双数据率2SDRAM)、DDR3 SDRAM等。顺便提及,SDRAM 120是权利要求中所描述的存储器的实例。
[DDR2 SDRAM的操作实例]
图2是本发明的第一实施方式中的SDRAM 120的状态图。顺便提及,下面将假设SDRAM 120为DDR2 SDRAM来进行描述。
在接通电源之后,SDRAM 120进行初始化操作,并进行初始化状态至空闲状态的转换。
因此,在MRS(模式寄存器设置)状态和EMRS(扩展模式寄存器设置)状态下,可进行诸如DRAM的突发长度、潜伏(latency)时间等的各种操作模式的设置。
当在空闲状态发布指定行地址的运行(active)命令(ACT)时,SDRAM 120从空闲状态经由激活状态转换到存储体运行状态。在该存储体运行状态下,将由ACT指定的行地址处的存储器单元所保持的数据全部读出到设置给SDRAM 120的临时存储装置中。此时,在DDR2侧自动进行从激活状态到存储体运行状态的转换。顺便提及,运行命令是权利要求中所描述的指定行地址的命令的实例。
因此,当发布指定列地址的写入命令(WRITE)时,SDRAM 120进行向写入状态的转换,并在经过写入潜伏时间后将写入数据存储在存储器中。在该写入状态下,通过将写入数据写入到保持行地址处的数据的SDRAM 120的临时存储装置中来存储写入数据,该写入是以由列地址指定的存储器单元作为起点的。在完成写入数据的存储后,在写入恢复的时间之后执行预充电,并且然后返回空闲状态。
另一方面,当发布指定列地址的读取命令(READ)时,SDRAM120进行向读取状态的转换,并且在经过读取潜伏时间后从SDRAM120输出读取数据。在该读取状态下,通过从保持行地址处的数据的SDRAM 120的临时存储装置读取读取数据来读取所要读取的数据,该读取是以由列地址指定的存储器单元作为起始点的。在完成读取数据的输出后,在读取恢复的时间之后,发布预充电命令(PRE)并且执行预充电,随后返回空闲状态。在该预充电中,存储在SDRAM 120所设置的临时存储装置中的数据被写入到由行地址指定的存储器单元中。顺便提及,写入命令和读取命令是权利要求中所描述的指定列地址的命令的实例。
因此,SDRAM 120根据来自命令生成部350的与操作有关的命令,进行状态转换。存储器控制器200基于经由信号线109提供的数据存取请求,生成与SDRAM 120的操作有关的命令。
[请求生成部的操作实例]
图3是示出了本发明第一实施方式中的请求生成部310的操作实例的时序图。以横坐标轴作为公共时间轴,图3示出了信号线109中的信号、突发长度设置为4(BL=4)时信号线319中的信号、以及突发长度设置为8(BL=8)时信号线319中的信号。此外,在该情况下,将存储器控制器200中控制具有400MHz的存储器时钟的DDR2 SDRAM(DDR2-800)的操作的请求生成部310假设为请求生成部310。
在信号线109中,操作码(opcode)表示数据存取请求中对于SDRAM 120的指令的信号,而i_address表示指示根据数据存取请求中的指令开始进行存取的存储器单元的地址的信号。在信号线109中,i_length指示要根据数据存取请求中的指令而被存取的数据。在该情况下,i_length用存储器时钟长度的单位来表示。具体地说,当在DDR2-800中i_length是“5”时,i_length指示10比特的数据。
在信号线319中,当进行“BL=4”和“BL=8”的设置时,操作码指示存储器请求中对于SDRAM 120的指令的信号,而o_bank指示存储器请求中指定要进行存取的存储体的存储体号码的信号。在信号线319中,o_row表示存储器请求中指定存储器单元中存取开始的行地址的信号,o_column表示存储器请求中指定存储器单元中存取开始的列地址的信号。在信号线319中,o_length表示存储器请求中要根据指令而被存取的数据的比特长度。在该情况下,o_length由存储器时钟长度的单位表示。在设置“BL=4”时,o_length具有的最大存储器时钟长度为“2”。在设置“BL=8”时,o_length具有的最大存储器时钟长度为“4”。
顺便提及,操作码是权利要求中所描述的存储器请求中的操作码的实例,并且操作码由操作指定提供部来提供。o_bank是权利要求中所描述的存储器请求中的存储体号码的实例。o_row是权利要求中所描述的存储器请求中的行地址的实例,并且行地址由操作指定提供部来提供。o_column是权利要求中所描述的存储器请求中的列地址的实例,并且列地址由操作指定提供部来提供。o_length是权利要求中所描述的存储器请求中的数据长度的实例。
当在设置“BL=4”的情况下经由信号线109将i_length是“5”的数据存取请求输入到请求生成部310中时,请求生成部310生成o_length为“2”的2个存储器请求,并且生成o_length为“1”的1个存储器请求。当在设置“BL=4”的情况下经由信号线109将两个连续地址的i_length是“2”的数据存取请求输入到请求生成部310中时,请求生成部310生成o_length为“2”的2个存储器请求。
当在设置“BL=8”的情况下经由信号线109将i_length是“5”的数据存取请求输入到请求生成部310中时,请求生成部310生成o_length为“4”的1个存储器请求,并且生成o_length为“1”的1个存储器请求。当在设置“BL=8”的情况下经由信号线109将两个连续地址的i_length是“2”的数据存取请求输入到请求生成部310中时,请求生成部310生成o_length为“4”的1个存储器请求。
因此,请求生成部310通过对数据存取请求进行合并和拆分生成以突发长度为单位的存储器请求。此外,当将指定与SDRAM 120有关的操作的命令输入到请求生成部310中时,请求生成部310按原样输出该命令。
[状态管理部的存储体信息的实例]
图4是示出了本发明第一实施方式中由状态管理部340管理的存储体信息的实例的列表。图4在左列中示出了寄存器名称,其指示保持作为存储体信息而管理的信息的寄存器,并在右列中示出了寄存器所保持的信息的涵义。
ActFlg[X]是将在存储体X中指定行地址的状态(运行)指示为“1”并且将在存储体X中没有指定行地址的状态(空闲)指示为“0”的寄存器。顺便提及,该运行指的是图2中所示的激活状态、存储体运行状态、写入状态以及读取状态。此外,该空闲指的是图2中所示的空闲状态、自动刷新状态、自刷新状态、预充电状态、MRS状态和EMRS状态。
ActRow[X]是指示当存储体X为运行时所指定的行地址的值的寄存器。
ActCnt[X]是指示当在R请求队列320中将存储体X的行选择信息提取出并删除(取出)时增加“1”的值,以及当在C请求队列330中将存储体X的列选择信息取出时减去“1”的值的寄存器。
TimActAll是对于SDRAM 120的所有存储体共用的、并且通过存储器时钟的周期数指示直到下一个ACT变为可发布的等待时间的寄存器。
TimAct[X]是通过存储器时钟的周期数指示直到下一个ACT在存储体X中变为可发布的等待时间的寄存器。
TimReadAll是对于SDRAM 120的所有存储体共用的、并且通过存储器时钟的周期数指示直到下一个READ变为可发布的等待时间的寄存器。
TimRead[X]是通过存储器时钟的周期数指示直到下一个READ在存储体X中变为可发布的等待时间的寄存器。
TimWriteAll是对于SDRAM 120的所有存储体共用的、并且通过存储器时钟的周期数指示直到下一个WRITE变为可发布的等待时间的寄存器。
TimWrite[X]是通过存储器时钟的周期数指示直到下一个WRITE在存储体X中变为可发布的等待时间的寄存器。
TimPre[X]是通过存储器时钟的周期数指示直到下一个预充电命令PRE在存储体X中变为可发布的等待时间的寄存器。
TimActAll、TimAct[X]、TimReadAll、TimRead[X]、TimWriteAll、TimWrite[X]和TimPre[X]是具有最小值为“0”的寄存器。在这些寄存器中,通过状态管理部340的倒计时计时器,在控制器时钟的每个周期内对于命令生成部350能够同时生成的命令的最大数量“N”进行减法运算。
因此,状态管理部340保持和管理作为各存储体的存储体信息的存储体操作信息和关于直到命令变为可发布的等待时间的等待时间信息。应当注意的是,图4中示出的寄存器被假定为操作根据本发明第一实施方式的存储器控制装置100所需的最少的寄存器,而状态管理部340的存储体信息不局限于图4中示出的存储体信息。
[命令生成部中的命令生成判断的实例]
图5是示出了本发明第一实施方式中被判定为通过命令生成部350生成各个命令的内容的实例的列表。图5在左列中示出了被判定为通过命令生成部350生成命令的内容,而在右列中示出了用于判断的条件。
ACT可发布状态指示命令生成部350对于由R请求指定的存储体(RasReqBnk)发布ACT的条件。当ActFlg[RasReqBnk]是[0]时,该ACT可发布状态的条件成立,即,ActFlg[RasReqBnk]指示了空闲状态。
ACT可发布时间是指示当ACT可发布状态的条件成立时命令生成部350发布ACT的定时。当TimReadAll小于N并且TimAct[RasReqBnk]小于N时,该ACT可发布时间成立,其中,N表示在命令生成部350中能够同时生成命令的最大数量。
ACT非必要性指示当命令生成部350不需要对于由R请求指定的行地址发布ACT时的条件。当ActFlg[RasReqBnk]为“1”并且RasReqBnk与ActRow[RasReqBnk]一致时,该ACT非必要性成立。
READ/WRITE可发布状态指示命令生成部350对于由C请求指定的存储体(CasReqBnk)发布READ或者WRITE的条件。当ActFlg[CasReqBnk]为“1”并且ActCnt[CasReqBnk]为“1”以上时,该READ/WRITE可发布状态成立。
READA(具有PRE的READ)/WRITEA(具有PRE的WRITE)可发布状态指示在发布READ/WRITE之后进一步自动发布预充电命令PRE的条件。当ActCnt[CasReqBnk]为“1”、RasReqBnk与CasReqBnk相同,同时“ACT非必要性”不成立时,该READA/WRITEA可发布状态成立。
READ可发布时间指示在READ/WRITE可发布状态的条件成立时命令生成部350发布READ的时序。当TimReadAll小于N、TimRead[CasReqBnk]小于N,并且C请求的操作码(CasReqOpc)为READ时,READ可发布时间成立。
WRITE可发布时间指示在READ/WRITE可发布状态的条件成立时命令生成部350发布WRITE的时序。当TimWriteAll小于N、TimWrite[CasReqBnk]小于N、以及CasReqOpc为WRITE时,WRITE可发布时间成立。
PRE可发布状态指示命令生成部350对于存储体X发布预充电命令PRE的条件。当在存储体X中,ActFlg[X]为“1”、ActCnt[X]为[0]以及“ACT非必要性”不成立时,该PRE可发布状态成立。
PRE可发布时间指示在存储体X的PRE可发布状态的条件成立时命令生成部350发布预充电命令PRE的时序。当TimPre[X]小于N时,该PRE可发布时间成立。
如图5所示,当命令的可发布状态和可发布时间成立时,发布命令。在这种情况下,当两个或者多个命令具有相同的可发布时间时,需要执行冲突避免处理,从而在该定时中发布一个命令,而延迟另一个命令。当在READ/WRITE和ACT之间发生冲突的命令发布时,本发明第一实施方式中的命令生成部350在该时序发布READ/WRITE,并延迟ACT的发布,从而执行冲突避免处理。当在READ/WRITE和预充电命令PRE之间发生冲突的命令发布时,本发明第一实施方式中的命令生成部350在该定时发布READ/WRITE,并延迟预充电命令PRE的发布,从而执行冲突避免处理。
[更新状态管理部中的存储体信息的实例]
图6是示出了本发明第一实施方式中更新状态管理部340中的存储体信息的实例的列表。图6在左列中示出了要更新的寄存器的寄存器名称,在中列中示出了寄存器更新的条件,在右列中示出了更新的描述。
在示出更新内容的列中,“发布时间”是指示命令生成部350中同时生成的命令在同步选择器组块220中的排列的时间顺序的值。该发布时间是从“0”开始以“1”增加的值。此外,当发布命令时将图5中示出的可发布时间的值设置为发布时间。发布时间指示为“0”的命令从信号线被提供,其中,命令在同步选择器模组块220中被排列时位于最前端。发布时间为“1”的命令从信号线被提供,其中该命令在同步选择器模组块220中排列在发布时间为“0”的命令之后。当命令生成部350能同时生成N个命令时,发布时间的最大数量为“N-1”,并且该发布时间指示在同步选择器模组块220中排列N个命令时的时间顺序,其中N指示在命令生成部350中能同时生成的命令的最大数量。在图1所示的存储器控制装置100中,发布时间指示为“0”的命令作为第一命令经由信号线359而被提供,而发布时间指示为“1”的命令作为第二命令经由信号线358而被提供。即,当在同一周期中生成多个命令时,命令生成部350为命令同步与输出部500提供命令,使得发布时间为较小数值的命令置于开始处。
顺便提及,在示出更新内容的列中所示的tRRD是通过将从ACT至不同存储体的ACT间的最小间隔计数为存储器时钟的周期数而得到的值。tRC是通过将从ACT至相同存储体的ACT间的最小间隔计数为存储器时钟的周期数而得到的值。tRPD是通过将相同存储体的从READ到预充电命令PRE间的最小间隔计数为存储器时钟的周期数而得到的值。tRP是通过将相同存储体的从预充电命令PRE到ACT间的最小间隔计数为存储器时钟的周期数而得到的值。tRCD是通过将相同存储体的从ACT到READ/WRITE间的最小间隔计数为存储器时钟的周期数而得到的值。tRAS是通过将相同存储体的从ACT到预充电命令PRE间的最小间隔计数为存储器时钟的周期数而得到的值。tWL是通过将从WRITE到WRITE数据开始的最小间隔计数为存储器时钟的周期数而得到的值。tWR是通过将相同存储体的从WRITE到预充电命令PRE间的最小间隔计数为存储器时钟的周期数而得到的值。tWTR是通过将相同存储体的从WRITE数据的结束到READ间的最小间隔计数为存储器时钟的周期数而得到的值。tRWD是通过将相同存储体的从READ到WRITE间的最小间隔计数为存储器时钟的周期数(不包括READ数据传送期间的周期数)而得到的值。BL/2是通过将突发长度(BL)除以2所得到的值。MAX(BL/2,tRPD)是BL/2和tRPD中的较大值。RasReqRow是R请求中的行地址的值。CasReqLng是C请求中的数据长度的值。
当从命令生成部350发布RasReqBnk的ACT时,ActFlg[RasReqBnk]更新为指示运行状态的“1”。
当从命令生成部350发布CasReqBnk的READA或者WRITEA时,ActFlg[CasReqBnk]更新为指示空闲状态的“0”。
当从命令生成部350发布其中PRE可发布状态和PRE可发布时间成立的存储体X的预充电命令PRE时,ActFlg[X]更新为“0”。
当从命令生成部350发布RasReqBnk的ACT时,ActRow[RasReqBnk]更新为[RasReqRow]。
当从命令生成部350发布其中PRE可发布状态和PRE可发布时间成立的存储体X的预充电命令PRE时,ActRow[X]更新为指示没有指定的行地址的无效指定。
当从命令生成部350发布RasReqBnk的ACT时或者在ACT非必要性的情况下,为ActCnt[RasReqBnk]增加“1”。
当从命令生成部350发布CasReqBnk的READ或WRITE时,从ActCnt[CasReqBnk]减去“1”。
当从命令生成部350发布ACT时,TimActAll更新为通过将RasReqBnk的ACT的发布时间和tRRD加在一起所得到的值。
当从命令生成部350发布ACT时,TimAct[RasReqBnk]更新为通过将RasReqBnk的ACT的发布时间和tRC加在一起得到的值。
当从命令生成部350发布READA时,TimAct[CasReqBnk]更新为通过将CasReqBnk的READA的发布时间、tRPD以及tRP加在一起得到的值。当从命令生成部350发布WRITEA时,TimAct[CasReqBnk]更新为通过将CasReqBnk的WRITEA的发布时间、tWL、BL/2、tWR以及tRP加在一起得到的值。
当从命令生成部350发布预充电命令PRE时,TimAct[X]更新为通过将存储体X的预充电命令PRE的发布时间和tRP加在一起得到的值,其中在该存储体X中,PRE可发布状态和PRE可发布时间成立。
当从命令生成部350发布READ时,TimReadAll更新为通过将CasReqBnk的READ的发布时间和CasReqLng加在一起得到的值。当从命令生成部350发布WRITE时,TimReadAll更新为通过将CasReqBnk的WRITE的发布时间、tWL、BL/2以及tWR加在一起得到的值。
当从命令生成部350发布ACT时,TimRead[CasReqBnk]更新为通过将用于发布CasReqBnk的READ的ACT的发布时间和tRCD加在一起得到的值。
当从命令生成部350发布WRITE时,TimWriteAll更新为通过将CasReqBnk的WRITE的发布时间和CasReqLng加在一起得到的值。当从命令生成部350发布READ时,TimWriteAll更新为通过将CasReqBnk的READ的发布时间、BL/2以及tRWD加在一起得到的值。
当从命令生成部350发布ACT命令时,TimWrite[CasReqBnk]更新为通过将用于发布CasReqBnk的WRITE的ACT的发布时间和tRCD加在一起得到的值。
当从命令生成部350发布ACT命令时,TimPre[RasReqBnk]更新为通过将RasReqBnk的ACT的发布时间和tRAS加在一起得到的值。
当从命令生成部350发布READ时,TimPre[CasReqBnk]更新为通过将CasReqBnk的READ的发布时间和MAX(BL/2,tRPD)加在一起得到的值。当从命令生成部350发布WRITE时,TimPre[CasReqBnk]更新为通过将CasReqBnk的WRITE的发布时间、tWL、BL/2以及tWR加在一起得到的值。
顺便提及,要更新的寄存器当所保持的数值大于所要更新的数值时,不进行更新。
顺便提及,存储器控制装置100可包括指定接收部,以从外部控制tRRD、tRC、tRPD、tRP、tRCD、tRAS、tWL、tWR、tWTR和tRWD的值,从而处理各种SDRAM 120的特性。
[命令确定组块的操作实例]
图7是本发明第一实施方式中的命令确定组块300的操作实例的时序图。利用控制器时钟作为横坐标轴的公共时间轴,图7示出了信号线329和信号线339中的信息、以及信号线349、信号线359和信号线358中的信息的一部分。假设在这种情况下SDRAM 120是具有CL(Cas潜伏时间)为5的DDR2-667。假设在这种情况下“BL”是“4”,tRRD是4,tRC是“20”,tRPD是“3”,tRP是“5”,tRCD是“5”,tRAS是“15”,tWL是“4”,tWR是“5”,tWTR是“3”,tRWD是“1”。顺便提及,假设在这种情况下命令确定组块300生成READ、WRITE、ACT、预充电命令PRE以及NOP的命令。顺便提及,假设在这种情况下当在READ和WRITE与预充电命令PRE和ACT之间发生命令冲突时,优先生成READ和WRITE。
假设请求生成部310生成以下14个存储器请求并将所生成的存储器请求提供给R请求队列320和C请求队列330,同时维持存储器请求的顺序。在存储器请求中包括存储器请求的涵义(操作码,存储体号码,行地址,列地址,表示为存储器时钟的周期数的数据长度)。
假设第一输入存储器请求是(READ,0,37bf,048,2),第二输入存储器请求是(READ,0,37bf,04c,2),第三输入存储器请求是(READ,1,37bf,048,2),以及第四输入存储器请求是(READ,1,37bf,04c,2)。接下来,假设第五输入存储器请求是(READ,2,37bf,048,2),第六输入存储器请求是(READ,2,37bf,04c,2),第七输入存储器请求是(READ,3,37bf,048,2),以及第八输入存储器请求是(READ,3,37bf,04c,2)。进一步地,假设第九输入存储器请求是(WRITE,0,26ae,068,2),第十输入存储器请求是(WRITE,0,26ae,06c,2),第十一输入存储器请求是(WRITE,1,26ae,068,2),以及第十二输入存储器请求是(WRITE,1,26ae,06c,2)。接着,假设第十三输入存储器请求是(WRITE,2,26ae,068,2),第十四输入存储器请求是(WRITE,2,26ae,06c,2),第十五输入存储器请求是(WRITE,3,26ae,068,2),第十六输入存储器请求是(WRITE,3,26ae,06c,2)。
在信号线329中示出了命令生成部350所参照的R请求。R请求队列320保持输入存储器请求中在图2中所示的操作码、存储体号码和行地址作为行选择信息。RasReqOpc表示在R请求中作为输入顺序中最旧的行选择信息的操作码。RasReqBnk表示R请求中的存储体号码。RasReqRow表示R请求中的行地址。
在信号线339中示出了命令生成部350所参照的C请求。C请求队列330保持输入存储器请求中在图2中所示的操作码、存储体号码、列地址以及数据长度作为列选择信息。CasReqOpc表示在C请求中作为输入顺序中最旧的列选择信息的操作码。CasReqBnk表示C请求中的存储体号码。CasReqClm表示C请求中的列地址。CasReqLng表示在C请求中由存储器时钟周期数表示的数据长度。
在信号线349中示出了与存储体[0]有关的信息,该信息包括在从状态管理部340提供给命令生成部350的存储体信息中。保持存储体信息中的各条信息的寄存器与图4至图6中示出的寄存器相同,因此以下将省略对其的描述。顺便提及,虽然这里仅示出了存储体[0]的时序图,但是其他存储体的信息也从状态管理部340提供给命令生成部350。
在信号线359中示出了从命令生成部350提供给第一命令输出部510的第一命令中的操作码和存储体号码。顺便提及,信号线359中的空白框表示NOP,其是指示空操作(无操作)的命令。
在信号线358中示出了从命令生成部350提供给第二命令输出部520的第二命令中的操作码和存储体号码。顺便提及,信号线358示出的时序图中的空白框表示NOP,其是指定空操作的命令。
下面将集中注意在控制时钟中的“T=0”和“T=1”来对时序图的解释进行描述。
首先,将描述“T=0”。包括第一存储器请求信息的R请求信息经由信号线329从R请求队列320输出到命令生成部350。包括第一存储器请求信息的C请求信息经由信号线339从C请求队列330输出到命令生成部350。此外,存储体信息经由信号线349从状态管理部340输出到命令生成部350。具体地说,作为RasReqOpc的READ、作为RasReqBnk的“0”、以及作为RasReqRow的“37bf”经由信号线329输入到命令生成部350。进一步地,作为CasReqOpc的“READ”、作为CasReqBnk的“0”、作为CasReqClm的“048”、以及作为CasReqLng的“2”经由信号线339输入到命令生成部350。进一步地,作为ActFlg[0]的“0”、作为ActRow[0]的无效指定(在图7中用“-”表示)、以及作为ActCnt[0]的[0](它们是经由信号线349输入的存储体信息中关于存储体[0]的信息)输入到命令生成部350。进一步地,输入作为TimActAll的“0”、作为TimAct[0]的“0”、作为TimReadAll的“0”、作为TimRead[0]的“0”、作为TimWriteAll的“0”、作为TimWrite[0]的“0”、以及作为TimPre[0]的“0”。
提供有上述信息的命令生成部350按照图5所示的命令生成的判断条件作出判定。于是,当可发布状态和可发布时间的条件都成立时,命令生成部350在可发布命令的可发布时间经由信号线发布命令,以提供命令。在“T=0”时,因为ActFlg[0]是[0],所以ACT可发布状态成立。因为TimActAll是[0]并且TimAct[0]是[0],所以ACT可发布时间成立。因为ActFlg[0]是[0],所以ACT非必要性不成立。因为ActFlg[0]是[0],所以READ可发布状态不成立。此外,因为所有存储体的ActFlg是[0],所以PRE可发布状态对于所有存储体均不成立。
基于这些判断,命令生成部350判定,由于发布时间为[0],所以第一存储器请求的ACT是可经由信号线359发布的,而第一存储器请求的READ是不可发布的。进一步地,命令生成部350判定没有向其发布预充电命令PRE的存储体。从而,命令生成部350生成用于将存储体[0]中的行地址“37bf”设置为存储体运行状态的ACT以及NOP。然后,命令生成部350从信号线359提供ACT,并从信号线358提供NOP。
由于命令生成部350已经发布ACT,所以命令生成部350从R请求队列320中提取并删除R请求。因为命令生成部350没有发布READ,所以命令生成部350将C请求队列330中的C请求按原样保留。命令生成部350将指示已经发布用于指定存储体[0]的ACT的信息经由信号线357提供给状态管理部340。状态管理部340基于指示已经发布用于指定存储体[0]的ACT的信息,对图6所示的寄存器进行更新。由于已经发布用于指定存储体[0]的ACT,因此ActFlg[0]更新为“1”。由于已经发布用于指定存储体[0]的ACT,因此ActRow[0]更新为“37bf”。由于已经发布用于指定存储体[0]的ACT,因此通过为ActCnt[0]增加“1”而将ActCnt[0]更新为“1”。
由于已经发布用于一个存储体的ACT,因此TimActAll更新为“4”,其中“4”是通过将ACT的发布时间(0)和tRRD(4)加在一起得到的值。由于已经发布指定存储体[0]的ACT,因此TimAct[0]更新为“20”,其中“20”是通过将ACT的发布时间(0)和tRC(20)加在一起得到的值。由于条件不成立,因此不更新TimReadAll。由于已经发布用于发布指定存储体[0]的READ的ACT,因此TimRead[0]更新为“5”,其中“5”是通过将ACT的发布时间(0)和tRCD(5)加在一起得到的值。由于条件不成立,因此不更新TimWriteAll。由于条件不成立,因此不更新TimWrite[0]。由于已经发布指定存储体[0]的ACT,因此TimPre[0]更新为“15”,其中“15”是通过将ACT的发布时间(0)和tRAS(15)加在一起得到的值。
从而,在“T=0”的周期的期间中,状态管理部340从指示存储体信息的等待时间信息的寄存器的值中减去“2”,其中“2”是在该期间内存储器时钟前进的周期数。因此,TimActAll从“4”更新为“2”。TimAct[0]从“20”更新为“18”。TimRead从“5”更新为“3”。TimPre[0]从“15”更新为“13”。TimReadAll、TimWriteAll以及TimWrite[0]为0,因此仍保持为0。
接下来,将描述“T=1”的情况。在R请求队列320中,在“T=0”时已经将包括第一存储器请求信息的行选择信息除去,从而包括第二存储器请求信息的行选择信息变为R请求。在C请求队列330中,包括第一存储器请求信息的列选择信息按原样保持,因此如同“T=0”时,包括第一存储器请求信息的列选择信息变成C请求。具体地,作为RasReqOpc的“READ”、作为RasReqBnk的“0”、以及作为RasReqRow的“37bf”经由信号线329输入到命令生成部350。进一步地,作为CasReqOpc的“READ”、作为CasReqBnk的“0”、作为CasReqClm的“048”、以及作为CasReqLng的“2”经由信号线339输入到命令生成部350。
进一步地,在“T=0”更新的存储体信息经由信号线349从状态管理部340输出到命令生成部350。即,输入作为ActFlg[0]的“1”、作为ActRow[0]的“37bf”、以及作为ActCnt[0]的[1]。进一步地,输入作为TimActAll的“2”、作为TimAct[0]的“18”、作为TimReadAll的“0”、作为TimRead[0]的“3”、作为TimWriteAll的“0”、作为TimWrite[0]的“0”、以及作为TimPre[0]的“15”。
提供有上述消息的命令生成部350按照图5所示的命令生成的判断条件作出判定。因为ActFlg[0]是[1],所以ACT可发布状态不成立。因为ActFlg[0]是[1],并且RasReqRow和ActRow[0]相同,即“37bf”,所以ACT非必要性成立。因为ActFlg[0]是[1]并且ActCnt[0]是[1],因此READ可发布状态成立。因为对于存储体[0]ActFlg[0]是[1]而ActCnt[0]是[1],因此PRE可发布状态不成立。对于其他存储体,PRE可发布状态也不成立。基于这些判断,命令生成部350判定第二存储器请求的ACT不需要发布,第一存储器请求的READ是不可发布的,以及没有向其发布预充电命令PRE的存储体。从而,命令生成部350从信号线359提供NOP并且从信号线358提供NOP。
由于ACT非必要性,因此命令生成部350从R请求队列320中提取并删除R请求。由于命令生成部350没有发布READ,因此命令生成部350将C请求队列330中的C请求按原样保留。
命令生成部350将指示指定存储体[0]的ACT被设置为ACT非必要性的信息经由信号线357提供给状态管理部340。状态管理部340基于指示用于指定存储体[0]的ACT被设置为ACT非必要性的信息,对图6所示的寄存器进行更新。具体地,由于指定存储体[0]的ACT不需要发布,所以通过为ActCnt[0]增加“1”而将ActCnt[0]更新为“2”。
在“T=1”的周期的期间中,状态管理部340从指示存储体信息的等待时间信息的寄存器的值减去“2”,其中“2”是在该期间内存储器时钟前进的周期数。因此,TimActAll从“2”更新为“0”。TimAct[0]从“18”更新为“16”。TimRead[0]从“3”更新为“1”。TimPre[0]从“13”更新为“11”。
由此,命令生成部350基于从R请求队列320输入的R请求、从C请求队列330输入的C请求、以及从状态管理部340输入的存储体信息来生成命令。
[命令生成部的操作实例]
接下来,将参考以下示图来描述本发明第一实施方式中的命令生成部350的操作。在下文中,示出了命令生成部350的操作,该操作对应于图7的时序图中的T=0至T=3、T=7、T=8、T=10、以及T=13的周期。顺便提及,为了方便起见,在信号线中没有示出命令生成部350提供的NOP。顺便提及,由命令生成部350所进行的从R请求队列320和从C请求队列330中提取(POP)并从而擦除R请求和C请求的操作由与信号线329和信号线339分离的虚线而示意性地示出。
图8A至图8C是示出了命令生成部350的操作的示意图,其中操作分别对应于T=0至T=2的周期。
图8A是示出了图7中“T=0”时的命令生成部350的操作的示图。命令生成部350使R请求队列302和C请求队列330经由信号线329和信号线339输出包括图7所示的第一存储器请求信息的R请求和C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。随后,命令生成部350判定ACT、READ、以及预充电命令PRE的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间是“0”所以基于R请求的ACT是可经由信号线359发布的、判定基于C请求的READ是不可发布的、以及判定预充电命令PRE对任何存储体均是不可发布的。因而,命令生成部350生成用于将存储体[0]中的行地址“37bf”设置为存储体运行状态的ACT以及NOP。随后,命令生成部350从信号线359提供ACT,并且从信号线358提供NOP。
随后,命令生成部350将指示已经发布指定存储体[0]的ACT的信息经由信号线357提供给状态管理部340。
由于命令生成部350已经发布ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。因此,在R请求队列320中,包括第二存储器请求信息的行选择信息变为R请求。
图8B是示出了图7中“T=1”时的命令生成部350的操作的示图。在“T=1”,命令生成部350使R请求队列320输出包括第二存储器请求信息的R请求,并使C请求队列330输出包括第一存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。随后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT不需要发布、判定基于C请求的READ是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350从信号线359提供NOP,并且从信号线358也提供NOP。
随后,命令生成部350将指示不需要发布用于指定存储体[0]的ACT的信息经由信号线357提供给状态管理部340。
由于命令生成部350已经判定ACT不需要发布,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来删除R请求。从而,在R请求序列320中,包括第三存储器请求信息的行选择信息变为R请求。
图8C是示出了图7中“T=2”时的命令生成部350的操作的示图。在“T=2”,命令生成部350使R请求队列320输出包括第三存储器请求信息的R请求,并使C请求队列330输出包括第一存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。随后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间为“0”所以基于R请求的ACT是可经由信号线359发布的、以及判定由于发布时间为“1”所以基于C请求的READ是可经由信号线358发布的。进一步地,命令生成部350判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于将存储体[1]中的行地址“37bf”设置为存储体运行状态的ACT,以及用于指定存储体[0]中的列地址“048”并将存储体[0]中的列地址“048”设置为读取状态的READ。然后,命令生成部350从信号线359提供ACT,并从信号线358提供READ。
随后,命令生成部350将指示已经发布指定存储体[1]的ACT和指定存储体[0]的READ的信息经由信号线357提供给状态管理部340。
因为命令生成部350已经发布ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。从而,在R请求队列320中,包括第四存储器请求信息的行选择信息变为R请求。由于命令生成部350已经发布READ,因此命令生成部350通过经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第二存储器请求信息的列选择信息变为C请求。
图9A至图9C是示出了命令生成部350的操作的示意图,其中操作分别对应于周期T=3、T=7、T=8。
图9A是示出了图7中“T=3”时的命令生成部350的操作的示图。在“T=3”,命令生成部350使R请求队列320输出包括第四存储器请求信息的R请求,并使C请求队列330输出包括第二存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间为“1”所以基于R请求的ACT不需要发布、判定基于C请求的READ可经由信号线358发布、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于指定存储体[0]中的列地址“04c”并将存储体[0]中的列地址“04c”设置为读取状态的READ以及NOP。然后,命令生成部350从信号线359提供NOP,并从信号线358提供READ。
随后,命令生成部350经由信号线357将指示不需要发布指定存储体[1]的ACT和已经发布指定存储体[0]的READ的信息提供给状态管理部340。
由于不需要发布ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。从而,在R请求队列320中,包括第五存储器请求信息的行选择信息变为R请求。由于命令生成部350已经发布READ,因此命令生成部350通过经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第三存储器请求信息的列选择信息变为C请求。
图9B是示出了图7中“T=7”时的命令生成部350的操作的示图。在“T=7”,命令生成部350使R请求队列320输出包括第八存储器请求信息的R请求,并使C请求队列330输出包括第六存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT不需要发布、以及由于发布时间为“1”所以判定基于C请求的READ是可经由信号线358发布的。进一步地,命令生成部350判定由于发布时间为“1”所以预充电命令PRE对于存储体[0]是可经由信号线358发布的,并判定预充电命令PRE对于其他的存储体是不可发布的。
由于基于C请求的READ和指定存储体[0]的预充电命令PRE相互冲突,因此命令生成部350需要作出冲突避免判定。在图7中的命令生成部350判定在“T=7”在发布时间为“1”时发布READ,这是由于命令生成部350被设置为在READ和预充电命令PRE之间发生冲突时赋予READ优先权。基于该结果,命令生成部350生成用于指定存储体[2]中的列地址“04c”并将存储体[2]中的列地址“04c”设置为读取状态的READ以及NOP。然后,命令生成部350从信号线359提供NOP,并从信号线358提供READ。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[2]的READ的信息提供给状态管理部340。
由于命令生成部350已经发布READ,因此命令生成部350通过经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第七存储器请求信息的列选择信息变为C请求。
图9C是示出了图7中“T=8”时的命令生成部350的操作的示图。在“T=8”,命令生成部350使R请求队列320输出包括第九存储器请求信息的R请求,并使C请求队列330输出包括第七存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT是不可发布的、以及判定由于发布时间为“1”所以基于C请求的READ是可经由信号线358发布的。进一步地,命令生成部350判定由于发布时间为“0”所以预充电命令PRE对于存储体[0]是可经由信号线359发布的、以及判定预充电命令PRE对于其他存储体是不可发布的。从而,命令生成部350生成用于指定存储体[3]中的列地址“04c”并将存储体[3]中的列地址“04c”设置为读取状态的READ,并生成指定存储体[0]的预充电命令PRE。然后,命令生成部350从信号线359提供预充电命令PRE,并从信号线358提供READ。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[3]的READ和指定存储体[0]的预充电命令PRE的信息提供给状态管理部340。
由于命令生成部350已经发布READ,因此命令生成部350通过经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第八存储器请求信息的列选择信息变为C请求。
图10A和图10B是示出了命令生成部350的操作的示意图,其操作分别对应于周期T=10和T=13。
图10A是示出了图7中“T=10”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第九存储器请求信息的R请求,并使C请求队列330输出包括第九存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间为“1”所以基于R请求的ACT是可经由信号线358发布的、以及判定基于C请求的WRITE是不可发布的。进一步地,命令生成部350判定由于发布时间为“0”所以预充电命令PRE对于存储体1是可经由信号线359发布的、以及判定确定预充电命令PRE对于其他存储体是不可发布的。从而,命令生成部350生成用于将存储体[0]中的行地址“26ae”设置为存储体运行状态的ACT,并生成指定存储体[1]的预充电命令PRE。然后,命令生成部350从信号线359提供预充电命令PRE,并从信号线358提供ACT。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[0]的ACT和指定存储体[1]的预充电命令PRE的信息提供给状态管理部340。
由于命令生成部350已经发布ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。从而,在R请求队列320中,包括第十存储器请求信息的行选择信息变为R请求。
图10B是示出了图7中“T=13”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第十二存储器请求信息的R请求,并使C请求队列330输出包括第九存储器请求信息的C请求。进一步地,命令生成部350使状态管理部340经由信号线349输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT是不可发布的、以及判定由于发布时间为“0”所以基于C请求的WRITE是可经由信号线359发布的。进一步地,命令生成部350判定由于发布时间为“1”所以预充电命令PRE对于存储体[3]是可经由信号线358发布的、以及判定预充电命令PRE对于其他存储体是不可发布的。从而,命令生成部350生成用于将存储体[0]中的行地址“068”设置为写入状态的WRITE,并生成指定存储体[3]的预充电命令PRE。然后,命令生成部350从信号线359提供预充电命令PRE,并从信号线358提供WRITE。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[0]的WRITE和指定存储体[3]的预充电命令PRE的信息提供给状态管理部340。
由于命令生成部350已经发布WRITE,因此命令生成部350经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第十存储器请求信息的列选择信息变为C请求。
[本发明第一实施方式中的存储器控制器的操作实例]
图11是示出了本发明第一实施方式中的存储器控制器200的操作实例的时序图。假设在该情况下图7所示的命令确定组块300生成指定与SDRAM 120有关的操作的命令。
在信号线309和信号线308中,以控制器时钟作为横坐标轴,示出了从命令确定组块300提供给同步选择器组块220的第一命令和第二命令的操作码和存储体号码。同步选择器组块220通过交替排列第一命令和第二命令而使第一命令排在开始来生成与存储器时钟频率相同的命令。
在地址/命令总线209中,以存储器时钟作为横坐标轴,示出了与存储器时钟频率相同的命令,其中该命令是基于信号线309和信号线308的命令生成的。将与存储器时钟频率相同的命令(该命令是在同步选择器组块220中生成的)以与存储器时钟命令输出组块230中的存储器时钟同步的定时提供给存储器接口250。然后,与存储器时钟频率相同的命令从存储器接口250经由地址/命令总线209提供给SDRAM 120。顺便提及,示为地址/命令总线209中的操作码的“A”表示“ACT”,示为地址/命令总线209中的操作码的“R”表示“READ”,示为地址/命令总线209中的操作码的“P”表示“PRE”,以及示为地址/命令总线209中的操作码的“W”表示“WRITE”。
在存储器总线208中,以存储器时钟作为横坐标轴,示出了在SDRAM 120和存储器控制器200之间交换的数据以及存储体号码。SDRAM 120基于经由地址/命令总线209提供的命令,经由存储器总线208进行数据存取,由此存储器总线208中示出的数据被交换。
这样,根据本发明第一实施方式,通过以存储器时钟的频率的1/2进行操作的命令生成部生成两个命令来指定SDRAM 120的操作。
<2.第二实施方式>
[存储器控制装置的构造的第二实例]
图12是示出了本发明第二实施方式中的存储器控制装置100的构造实例的框图。除了图1所示的存储器控制装置100的构成部件之外,存储器控制装置100还包括H请求队列360。在这种情况下,除了H请求队列360之外的构成部件与图1中相同,因此下面将省略这些构成部件的描述,并且用与图1中相同的参考标号标记这些部件。
H请求队列360从R请求队列320中提取R请求,并保持所提取的R请求。当命令生成部350等待基于R请求而发布命令时,H请求队列360从R请求队列320中提取R请求,并将R请求作为等待行选择信息来保持。H请求队列360由执行先入先出操作的FIFO型队列来形成。H请求队列360将所保持的等待行选择信息中最旧的等待行选择信息作为H请求经由信号线369输出给命令生成部350。当基于H请求在命令生成部350中生成指定行地址的命令时,通过命令生成部350提取H请求而将H请求删除。顺便提及,H请求360是权利要求中所描述的等待信息保持部的实例。
命令生成部350基于经由信号线369、329、339和349输入的H请求、R请求、C请求以及存储体信息来生成指定与SDRAM 120有关的操作的命令。
接下来,将参照附图对本发明第二实施方式中的命令确定组块300的操作实例进行描述。
[本发明第二实施方式中的命令确定组块的操作实例]
图13A和图13B分别是示出本发明第一实施方式和第二实施方式中的命令确定组块300的操作实例的时序图。在图13A和图13B中,控制器时钟用作横坐标轴。顺便提及,假设在该情况下“BL”是“8”,并且“tRPD”是“5”。此外,假设SDRAM 120除了“tRPD”之外的性能与图7中的性能相同。假设存储体信息与图4至图6所示的相同。顺便提及,假设在该情况下H请求队列360是保持一个数据的FIFO型队列。
假设请求生成部310生成以下四个存储器请求,并将所生成的存储器请求提供给R请求队列320和C请求队列330,同时维持存储器请求的顺序。假设第一个输入存储器请求是(READ,0,159d,0fc,4),第二个输入存储器请求是(READ,0,048c,000,4),第三个输入存储器请求是(READ,1,159d,0fc,4),以及第四个输入存储器请求是(READ,1,048c,000,4)。
图13A示出了图1所示的第一实施方式中的命令确定组块300的操作实例,命令确定组块300基于以上所述的四个存储器请求而生成命令。
第一存储器请求和第二存储器请求具有相同的存储体号码“0”,但是具有不同的行地址。第三存储器请求和第四存储器请求也具有相同的存储体号码“1”,但是具有不同的行地址。从而,基于第二存储器请求和第四存储器请求的ACT不设置为ACT非必要性。因此,基于第二存储器请求和第四存储器请求的ACT在第一个数据和第四个数据的读取结束后以及预充电命令PRE发布之后再发布。
首先,在“T=0”,从信号线359发布基于包括第一存储器请求信息的R请求的ACT。然后,在“T=2”,从信号线358发布基于包括第一存储器请求信息的C请求的第一READ。接下来,在“T=7”,从信号线358发布指定存储体[0]的预充电命令PRE,其中存储体[0]的操作由第一READ来指定。
接下来,在“T=10”,从信号线359发布基于包括第二存储器请求信息的R请求的ACT。然后,在“T=12”,从信号线359发布基于包括第三存储器请求信息的R请求的ACT,从信号线358提供基于包括第二存储器请求信息的C请求的第二READ。然后,在“T=14”,发布基于包括第三存储器请求信息的C请求的第三READ。接下来,在“T=17”,从信号线358发布指定存储体[0]的预充电命令PRE,其中存储体[0]的操作由第二READ来指定。接下来,在“T=19”,从信号线358发布指定存储体[1]的预充电命令PRE,其中存储体[1]的操作由第三READ来指定。
在“T=22”,基于包括第四存储器请求信息的R请求从信号线359发布ACT。然后,在“T=24”,从信号线358发布基于包括第四存储器请求信息的C请求的第四READ。
图13B示出了图12所示的第二实施方式中的命令确定组块300的操作实例,命令确定组块300基于以上所述的四个存储器请求而生成命令。在信号线369中示出了由命令生成部350所参照的H请求。HldReqOpc表示H请求中的操作码。HldReqBnk表示H请求中的存储体号码。HldReqRow表示H请求中的行地址。
图13B中的命令确定组块300包括H请求队列360。从而,当命令生成部350等待基于R请求而发布命令时,从R请求队列320中提取R请求并将其作为H请求保持。
首先,在“T=0”,从信号线359发布基于包括第一存储器请求信息的R请求的ACT。
在“T=1”,由于基于包括第二存储器请求信息的R请求的ACT未设置为ACT非必要性,因此命令生成部350等待发布基于包括第二存储器请求信息的R请求的ACT。此时,由于H请求队列360具有空位,因此将包括第二存储器请求信息的R请求从R请求队列320取出而放到H请求队列360中。因此,包括第三存储器请求信息的行选择信息变为R请求,而包括第二存储器请求信息的等待行选择信息变为H请求。
在“T=2”,基于包括第三存储器请求信息的R请求、包括第二存储器请求信息的H请求、包括第一存储器请求C请求和存储体信息来生成命令。从而,从信号线359发布基于包括第三存储器请求信息的R请求的ACT。此外,从信号线358发布基于包括第一存储器请求信息的C请求的第一READ。
在“T=7”,从信号线358发布指定存储体[0]的预充电命令PRE,其中存储体[0]的操作由第一READ来指定。
在“T=10”,基于包括第四存储器请求信息的R请求、包括第二存储器请求信息的H请求、包括第一存储器请求信息的C请求和存储体信息来生成命令。从而,从信号线359发布基于包括第二存储器请求信息的H请求的ACT。随后,命令生成部350提取并删除H请求,并且H请求队列360从R请求队列320提取包括第四存储器请求信息的R请求并将其保持。
随后,在“T=12”,从信号线358提供基于包括第二存储器请求信息的C请求的第二READ。接下来,在“T=14”中,从信号线358提供基于包括第三存储器请求信息的第三READ。在“T=17”,从信号线359发布由第三READ指定的存储体[1]的预充电命令PRE。进一步地,在“T=17”,从信号线358发布由第二READ指定的存储体[0]的预充电命令PRE。
在“T=19”,基于包括第四存储器请求信息的H请求、包括第一存储器请求信息的C请求和存储体信息来生成命令。从而,从信号线358发布基于包括第四存储器请求信息的H请求的ACT。然后,在“T=22”,从信号线359发布基于包括第四存储器请求信息的C请求的READ。
由此,在存在具有相同存储体号码但是具有不同行地址的连续的存储器请求时,提供H请求队列360能够比本发明的第一实施方式更高效地生成多个命令。
[本发明第二实施方式中的命令生成部的操作实例]
下面将参照以下附图来描述本发明第二实施方式中的命令生成部350的操作。下面将示出图13B的时序图中T=0至T=3、T=10、以及T=19时的命令生成部350的操作。顺便提及,为了方便起见,由命令生成部350提供的NOP没有在信号线中示出。顺便提及,由命令生成部350所进行的从R请求队列320和C请求队列330中提取(POP)并从而擦除R请求和C请求的操作由与信号线329和339分离的虚线示意性地示出。顺便提及,由命令生成部350所进行的从H请求队列360中提取(POP)并从而擦除H请求的操作由与信号线369分离的虚线示意性地示出。
图14A至图14C是示出了本发明第二实施方式中的命令生成部350的操作的示意图,其中操作分别对应于T=0至T=2的周期。
图14A是示出了图13B中“T=0”时的命令生成部350的操作的示图。命令生成部350使R请求队列320和C请求队列330经由信号线329和信号线339输出包括第一存储器请求信息的R请求和C请求。此时,由于H请求队列360没有保持等待行选择信息,因此没有从H请求队列360输出H请求。
命令生成部350基于R请求、C请求以及由状态管理部340提供的存储体信息判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间是“0”所以基于R请求的ACT是可经由信号线359发布的、判定基于C请求的READ是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于将存储体[0]中的行地址“159d”设置为存储体运行状态的ACT以及NOP。然后,命令生成部350从信号线359提供ACT,并且从信号线358提供NOP。
随后,命令生成部350将指示已经发布指定存储体[0]的信息经由信号线357提供给状态管理部340。
由于命令生成部350已经发布ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。从而,在R请求队列320中,包括第二存储器请求信息的行选择信息变为R请求。
图14B是示出了图13B中“T=1”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第二存储器请求信息的R请求,并且使C请求队列330输出包括第一存储器请求信息的C请求。此时,由于H请求队列360没有保持等待行选择信息,因此没有从H请求队列360中输出H请求。命令生成部350基于R请求、C请求以及从状态管理部340输出的存储体信息判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT是不可发布的、判定基于C请求的READ是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成两个NOP,并从信号线359和信号线358提供这两个NOP。
随后,命令生成部350从R请求队列320中提取R请求,并将所提取的R请求提供给H请求队列360。从而,在R请求队列320中,包括第三存储器请求信息的行选择信息变为R请求。此外,在H请求队列360中,包括第二存储器请求信息的等待行选择信息变为H请求。
图14C是示出了图13B中“T=2”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第三存储器请求信息的R请求,并且使C请求队列330输出包括第一存储器请求信息的C请求。进一步地,命令生成部350使H请求队列360输出包括第二存储器请求信息的H请求。命令生成部350基于R请求、C请求、H请求以及从状态管理部340提供的存储体信息,来判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间为“0”所以基于R请求的ACT是可经由信号线359发布的、以及判定由于发布时间为“1”所以基于C请求的READ是可经由信号线358发布的。进一步地,命令生成部350判定基于H请求的ACT是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于将存储体[1]中的行地址“159d”设置为存储体运行状态的ACT,同时生成用于指定存储体[0]中的列地址“f8”并且将存储体[0]中的列地址“f8”设置为读取状态的READ。然后,命令生成部350从信号线359提供ACT,并且从信号线358提供READ。
随后,命令生成部350将指示已经发布指定存储体[1]的ACT和指定存储体[0]的READ的信息经由信号线357提供给状态管理部340。
由于命令生成部350已经发布基于R请求的ACT,因此命令生成部350通过经由信号线329从R请求队列320中提取R请求来将R请求删除。从而,在R请求队列320中,包括第四存储器请求信息的行选择信息变为R请求。由于命令生成部350已经发布READ,因此命令生成部350通过经由信号线339从C请求队列330中提取C请求来将C请求删除。从而,在C请求队列330中,包括第二存储器请求信息的列选择信息变为C请求。
图15A至图15C是示出了本发明第二实施方式中的命令生成部350的操作的示意图,其中操作分别对应于周期T=3、T=10、T=19。
图15A是示出了图13B中“T=3”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第四存储器请求信息的R请求,并且使C请求队列330输出包括第二存储器请求信息的C请求。进一步地,命令生成部350使H请求队列360输出包括第二存储器请求信息的H请求。命令生成部350基于R请求、C请求、H请求以及从状态管理部340提供的存储体信息,来判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT是不可发布的、以及判定基于C请求的READ是不可发布的。进一步地,命令生成部350判定基于H请求的ACT是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。因而,命令生成部350生成两个NOP,并从信号线359和信号线358提供这两个NOP。
随后,由于H请求队列360没有空位,因此命令生成部350不将R请求传送到H请求队列360。因此,在R请求队列320中,包括第三存储器请求信息的行选择信息作为R请求而保持。此外,在H请求队列360中,包括第二存储器请求信息的等待行选择信息作为H请求而保持。
图15B是示出了图13B中“T=10”时的命令生成部350的操作的示图。命令生成部350使R请求队列320输出包括第四存储器请求信息的R请求,并且使C请求队列330输出包括第二存储器请求信息的C请求。进一步地,命令生成部350使H请求队列360输出包括第二存储器请求信息的H请求。命令生成部350基于R请求、C请求、H请求以及从状态管理部340提供的存储体信息,来判定命令的可发布条件和可发布时间。结果,命令生成部350判定基于R请求的ACT是不可发布的、以及判定基于C请求的READ是不可发布的。进一步地,命令生成部350判定由于发布时间为“0”所以基于H请求的ACT是可经由信号线359发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于将存储体[0]中的行地址“048c”设置为存储体运行状态的ACT以及NOP。然后,命令生成部350从信号线359提供ACT,并从信号线358提供NOP。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[0]的ACT的信息提供给状态管理部340。
由于命令生成部350已经发布基于H请求的ACT,因此命令生成部350通过经由信号线369从H请求队列360中提取H请求来将H请求删除。从而,H请求队列360处于空闲状态,其中H请求队列360没有保持等待行选择信息。然后,命令生成部350从R请求队列320中提取R请求,并将所提取的R请求提供给H请求队列360。因此,在H请求队列360中,包括第四存储器请求信息的等待行选择信息变为H请求。此外,R请求队列320处于没有行选择信息的空闲状态。
图15C是示出了图13B中“T=19”时的命令生成部350的操作的示图。命令生成部350使C请求队列330输出包括第四存储器请求信息的C请求,并且使H请求队列360输出包括第四存储器请求信息的H请求。由于R请求队列320没有保持行选择信息,因此没有要输出的R请求。命令生成部350基于H请求、C请求以及从状态管理部340提供的存储体信息,来判定命令的可发布条件和可发布时间。结果,命令生成部350判定由于发布时间为“0”所以基于H请求的ACT是可经由信号线359发布的、判定基于C请求的READ是不可发布的、以及判定预充电命令PRE对于任何存储体均是不可发布的。从而,命令生成部350生成用于将存储体[1]中的行地址“048c”设置为存储体运行状态的ACT以及NOP。然后,命令生成部350从信号线359提供ACT,并从信号线358提供NOP。
随后,命令生成部350经由信号线357将指示已经发布指定存储体[1]的ACT的信息提供给状态管理部340。
由于命令生成部350已经发布基于H请求的ACT,因此命令生成部350通过经由信号线369从H请求队列360中提取H请求来将H请求删除。从而,H请求队列360处于空闲状态,其中H请求队列360没有保持等待行选择信息。然后,由于R请求队列320没有处于等待状态的R请求,因此命令生成部350将H请求队列360按原样保留在空闲状态。
因此,根据本发明的第二实施方式,当存在具有相同存储体号码而具有不同行地址的连续的存储器请求时,提供H请求队列360能够更高效地发布命令。
下面将参照附图描述当多个命令在相同的发布时间可发布时,通过命令生成部350进行的命令冲突避免的实例。[在本发明第一和第二实施方式中当通过将预充电命令PRE的优先级置于READ和WRITE之上来提高数据读出的效率时的命令冲突避免的实例]
图16A、图16B和图16C是示出了在本发明的第一和第二实施方式中当通过赋予预充电命令PRE优先级以避免命令冲突来提高数据读出效率时的命令冲突避免的实例的时序图。以存储器时钟作为公共的横坐标轴,图16A至图16C示出了通过存储器控制器200经由地址/命令总线209提供给SDRAM 120的命令。图16A至图16C还示出了根据命令读取的并且从SDRAM 120经由存储器总线208提供给存储器控制器200的数据。
在该情况下,作为命令生成部350所发布的命令,对于存储体[0]假设第一命令READ、第二命令READ和第三命令预充电命令PRE。在该情况下,对于存储体[1],假设所发布预充电命令PRE为第一命令、所发布的ACT为第二命令、以及所发布的READ为第三命令的情况。假设在指定存储体[0]的第一READ和指定存储体[1]的第一预充电命令PRE之间发生命令冲突。此外,假设“BL”是“8”且“tRPD”是“5”。假设SDRAM 120除了“tRPD”之外的性能都与图7所示的相同。
图16A示意性地示出了命令生成部350在作出命令冲突避免判定之前的状态。在“T=0”,指定存储体[0]的READ和指定存储体[1]的预充电命令PRE相互冲突。即,在该状态下,命令生成部350已判定指定存储体[0]的READ和指定存储体[1]的预充电命令PRE在同一命令时钟周期中的同一发布时间均是可发布的。命令生成部350不能在同一周期中的同一发布时间生成多个命令。从而,在这种情况下,命令生成部350根据预设的条件作出用于避免命令冲突的判定。然后,根据避免判定,在该周期内的该发布时间发布一个命令,而随后再发布另一个命令。
图16B示意性地示出了命令生成部350在“T=0”时作出将READ优先的命令冲突避免判定的情况。假设在该情况下在命令生成部350中进行将READ和WRITE的发布的优先级置于预充电命令PRE的发布之上的设置。
在彼此冲突的指定存储体[0]的第一READ和指定存储体[1]的预充电命令PRE中,命令生成部350在对应于“T=0”的定时优先发布指定存储体[0]的第一READ。因此,在“T=0”发布指定存储体[0]的第一READ。然后,在“T=1”发布指定存储体[1]的预充电命令PRE。
随后,在“T=4”发布指定存储体[0]的第二READ。在“T=6”发布指定存储体[1]的ACT。在“T=9”发布指定存储体[0]的预充电命令PRE。在“T=11”发布指定存储体[1]的READ。
因此,在“T=5至T=8”提供根据指定存储体[0]的第一READ读取的数据,并且在“T=9至T=12”提供根据指定存储体[0]的第二READ读取的数据。进一步地,在“T=16至T=19”提供根据指定存储体[1]的READ读取的数据。
图16C示意性地示出了命令生成部350在“T=0”作出将预充电命令PRE优先的命令冲突避免判定的情况。假设在该情况下在命令生成部350中进行将预充电命令PRE的发布的优先级置于READ和WRITE发布之上的设置。进一步地,假设在命令生成部350中进行将ACT的发布的优先级置于READ和WRITE的发布之上的设置。
在彼此冲突的指定存储体[0]的第一READ和指定存储体[1]的预充电命令PRE中,命令生成部350在对应于“T=0”的定时优先发布预充电命令PRE。从而,在“T=0”发布指定存储体[1]的预充电命令PRE。然后,在“T=1”发布指定存储体[0]的第一READ。
随后,在“T=5”,在指定存储体[1]的ACT和指定存储体[0]的第二READ之间发生命令冲突。命令生成部350在对应于“T=5”的定时优先地发布指定存储体[1]的ACT。从而,在“T=5”发布指定存储体[1]的ACT。然后,在“T=6”发布指定存储体[0]的第二READ。
随后,在“T=10”发布指定存储体[1]的READ。在“T=11”发布指定存储体[0]的预充电命令PRE。
因此,在“T=6至T=9”发布根据指定存储体[0]的第一READ读取的数据,并且在“T=11至T=14”发布根据指定存储体[0]的第二READ读取的数据。进一步地,在“T=15至T=18”发布根据指定存储体[1]的READ读取的数据。
因此,在本发明的第一实施方式和第二实施方式中,在如图16A所示的命令冲突的情况下,当预充电命令PRE和ACT的优先级置于READ之上时,通过高效地转移数据实现命令冲突避免。顺便提及,虽然图16A至图16C假设发布READ的情况,但是对于发布WRITE的情况也同样成立。当预充电命令PRE和ACT的优先级置于WRITE之上时,也能够通过高效地转移数据实现命令冲突避免。[本发明第一和第二实施方式中当通过将READ和WRITE的优先级置于预充电命令PRE之上来提高数据读出效率时的避免命令冲突的实例]
图17A、图17B以及图17C是示出了在本发明的第一和第二实施方式中通过赋予READ优先权以避免命令冲突来提高数据读出效率的命令冲突避免的实例的时序图。以存储器时钟作为公共的横坐标轴,图17A至图17C示出了通过存储器控制器200经由地址/命令总线209提供给SDRAM 120的命令。图17A至图17C还示出了根据命令所读取的并且从SDRAM 120经由存储器总线208提供给存储器控制器200的数据。
在该情况下,作为命令生成部350所发布的命令,对于存储体[0]假设第一命令READ、第二命令READ、第三命令READ以及第四命令预充电命令PRE。在该情况下,对于存储体[1],假设所发布的预充电命令PRE为第一命令、所发布的ACT为第二命令、以及所发布的READ为第三命令。假设在指定存储体[0]的第一READ和指定存储体[1]的第一预充电命令PRE之间发生命令冲突。此外,假设“BL”是“8”并且“tRPD”是“5”。假设SDRAM 120除了“tRPD”之外的性能都与图7所示的相同。
图17A示意性地示出了命令生成部350在作出命令冲突避免判定之前的状态。在“T=0”,指定存储体[0]的READ和指定存储体[1]的预充电命令PRE相互冲突。即,在该状态下,命令生成部350已判定指定存储体[0]的READ和指定存储体[1]的预充电命令PRE在同一命令时钟周期中的同一发布时间均是可发布的。命令生成部350不能在同一周期中的同一发布时间生成多个命令。从而,在这种情况下,命令生成部350根据预设的条件作出用于避免命令冲突的判定。然后,根据避免判定,在该周期中的该发布时间发布一个命令,而随后再发布另一个命令。
图17B示意性地示出了命令生成部350在“T=0”作出将READ优先的命令冲突避免判定的情况。假设在该情况下在命令生成部350中进行将READ和WRITE的发布的优先级置于预充电命令PRE的发布之上的设置。
在彼此冲突的指定存储体[0]的第一READ和指定存储体[1]的预充电命令PRE中,命令生成部350在对应于“T=0”的定时优先地发布指定存储体[0]的第一READ。因此,在“T=0”发布指定存储体[0]的第一READ。然后,在“T=1”发布指定存储体[1]的预充电命令PRE。
随后,在“T=4”发布指定存储体[0]的第二READ。在“T=6”发布指定存储体[1]的ACT。在“T=8”发布指定存储体[0]的READ。然后,在“T=12”发布指定存储体[1]的READ。在“T=13”发布指定存储体[0]的预充电命令PRE。
因此,在“T=5至T=8”提供根据指定存储体[0]的第一READ读取的数据,并且在“T=9至T=12”提供根据指定存储体[0]的第二READ读取的数据。进一步地,在“T=13至T=16”提供根据指定存储体[0]的第三READ读取的数据。在“T=17至T=20”提供根据指定存储体[1]的READ读取的数据。
图17C示意性地示出了命令生成部350在“T=0”作出将预充电命令PRE优先的命令冲突避免判定的情况。假设在该情况下在命令生成部350中进行将预充电命令PRE发布的优先级置于READ和WRITE发布之上的设置。进一步地,假设在命令生成部350中进行将ACT的发布的优先级置于READ和WRITE发布之上的设置。
在彼此冲突的指定存储体[0]的第一READ和指定存储体[1]的预充电命令PRE中,命令生成部350在对应于“T=0”的定时优先地发布预充电命令PRE。从而,在“T=0”发布指定存储体[1]的预充电命令PRE。然后,在“T=1”发布指定存储体[0]的第一READ。
随后,在“T=5”,在指定存储体[1]的ACT和指定存储体[0]的第二READ之间发生命令冲突。命令生成部350在对应于“T=5”的定时优先地发布指定存储体[1]的ACT。从而,在“T=5”发布指定存储体[1]的ACT。因此,在“T=6”发布指定存储体[0]的第二READ。
随后,在“T=10”生成指定存储体[0]的READ。在“T=14”生成指定存储体[1]的READ。在“T=15”生成指定存储体[0]的预充电命令PRE。
因此,在“T=6至T=9”提供根据指定存储体[0]的第一READ读取的数据,并且在“T=11至T=14”提供根据指定存储体[0]的第二READ读取的数据。进一步地,在“T=15至T=18”提供根据指定存储体[0]的第三READ读取的数据,并且在“T=19至T=32”提供根据指定存储体[1]的READ读取的数据。
因此,在本发明的第一实施方式和第二实施方式中,在如图17A所示的命令冲突的情况下,当READ的优先级置于预充电命令PRE和ACT之上时,能够通过高效地转移数据实现命令冲突避免。顺便提及,虽然图17A至图17C假设发布READ的情况,但是对于发布WRITE的情况也同样成立。当WRITE的优先级置于预充电命令PRE和ACT之上时,也能够通过高效地转移数据实现命令冲突避免。
在本发明的第一实施方式和第二实施方式中,通过使用预设的命令优先顺序来避免命令冲突。然而,当需要避免命令冲突时,能够通过根据图16A至图16C和图17A至图17C所示的命令冲突的状态选择将要优先的命令,从而实现有效的命令冲突避免。
下面将参照附图描述命令生成部350在命令冲突处理时选择要被优先的命令的第三实施方式。
<3.第三实施方式>
[第三实施方式中的请求生成部的操作实例]
图18是示出了本发明第三实施方式中的请求生成部310的操作实例的时序图。请求生成部310除了生成图3所示的信号线319中的信号外,还生成请求ID。除了请求ID之外的信号都与图3中的相同,因此下面将省略对这些信号的描述。
在第三实施方式中,当数据存取请求经由信号线109输入到请求生成部310中时,请求生成部310生成包括请求ID、操作码、o_bank、o_row、o_column以及o_length信号的存储器请求。该请求ID是指示生成的存储器请求在存储器请求中的顺序的号码的信号。例如,该请求ID是表示为按生成存储器请求的顺序每次增加“1”的号码的信号。
因此,在本发明的第三实施方式中的请求生成部310对存储器请求进行合并和拆分,从而以突发长度为单位生成包括请求ID的存储器请求。
[本发明第三实施方式中的命令冲突避免判定的实例]
图19是示出了本发明第三实施方式中被判定为通过命令生成部350执行命令冲突避免操作的内容的实例的列表。图19在左列中示出了命令生成部350的命令冲突避免操作的内容,并在右列中示出了操作的条件。
列中示出了操作条件的“P”表示在同一存储体中从PRE发布到READ发布的期间内可发布的READ的最大数量。即,该“P”是由图19的操作条件中的括号中示出的关于“P”的表达式所确定的正整数的最大值。
列中示出了操作条件的“A”表示在同一存储体中从ACT发布到READ和WRITE发布的期间内可发布的READ的最大数量。即,该“A”是由图19的操作条件中的括号中示出的关于“A”的表达式所确定的正整数的最大值。
CasReqBnk的PRE优先于RasReqBnk的READ而发布是指在基于C请求的READ和由R请求指定的存储体的PRE之间发生命令冲突时,在其定时发布PRE并在稍后发布READ的操作。当R请求的请求ID和C请求的请求ID之间的差值为“P”以下时,用于优先发布的操作条件成立。
CasReqBnk的READ优先于RasReqBnk的PRE而发布是指在由R请求指定的存储体的PRE和基于C请求的READ之间发生命令冲突时,在其定时发布READ并在稍后发布PRE的操作。当R请求的请求ID和C请求的请求ID之间的差值大于“P”时,用于优先发布的操作条件成立。
RasReqBnk的ACT优先于CasReqBnk的READ而发布是指在基于C请求的READ和由R请求指定的存储体的ACT之间发生命令冲突时,在其定时发布ACT并在稍后发布READ的操作。当R请求的请求ID和C请求的请求ID之间的差值为“A”以下时,用于优先发布的操作条件成立。
CasReqBnk的READ优先于RasReqBnk的ACT而发布是指在由R请求指定的存储体的ACT和基于C请求的READ之间发生命令冲突时,在其定时中发布READ并在稍后发布ACT的操作。当R请求的请求ID和C请求的请求ID之间的差值大于“A”时,用于优先发布的操作条件成立。
[当优先发布PRE时命令生成部的操作实例]
图20是示出了本发明第三实施方式中命令生成部350在判定将预充电命令PRE的发布优先时的操作的示意图。顺便提及,为了方便起见,由命令生成部350进行的从R请求队列320和C请求队列330中提取(POP)并从而擦除R请求和C请求的操作由与信号线329和信号线339分离的虚线示意性地示出。
假设请求生成部310生成以下六个存储器请求并将所生成的存储器请求提供给R请求队列320和C请求队列330,同时维持存储器请求的顺序。在该情况下示出的存储器请求指示存储器请求中的(请求ID,操作码,存储体号码,行地址,列地址,表示为存储器时钟的周期数的数据长度)。
假设第一输入存储器请求是(0,READ,1,37bf,048,4)、第二输入存储器请求是(1,READ,1,37bf,050,4)、以及第三输入存储器请求是(2,READ,0,37bf,048,4)。接下来,假设第四输入存储器请求是(3,READ,0,37bf,050,4)、第五输入存储器请求是(4,READ,1,48c0,030,4)、以及第六输入存储器请求是(5,READ,1,48c0,038,4)。
此外,假设包括第五存储器请求信息的行选择信息是R请求队列320中的R请求。假设包括第三存储器请求信息的列选择信息是C请求队列330中的C请求。进一步地,假设状态管理部340所保持的存储体信息指示在发布时间“0”,PRE对于存储体[1]是可经由信号线359发布的,并且在发布时间“0”,READ对于存储体[0]是可经由信号线359发布的。顺便提及,在该情况下,假设“BL”是“8”以及“tRPD”是“5”。此外,假设SDRAM 120除了“tRPD”之外的性能与图7中的相同。即,“tRPD”是“5”,“tRP”是“5”,以及“BL/2”是“4”。从而,“P”是2。
命令生成部350使R请求队列320输出R请求,使C请求队列330输出C请求,以及使状态管理部340输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。连同该判断,命令生成部350计算R请求的请求ID和C请求的请求ID之间的差值,并将所计算的差值与“P”和“A”进行比较。
结果,命令生成部350判定由于发布时间为“0”所以基于C请求的READ是可经由信号线359发布的、以及判定由于发布时间为“0”所以预充电命令PRE对于存储体[1]是可经由信号线359发布的。此外,由于R请求的请求ID和C请求的请求ID之间的差值为“2”,因此当在基于C请求的READ和指定存储体[1]的PRE之间发生命令冲突时,命令生成部350判定优先发布PRE。即,作为在发布时间“0”时避免命令冲突的判定的结果,命令生成部350判定在发布时间“0”发布预充电命令PRE,而在发布时间“1”发布READ。
从这些判定中,命令生成部350生成用于指定存储体[0]中的列地址“048”并将存储体[0]中的列地址“048”设置为读取状态的READ,并生成指定存储体[1]的预充电命令PRE。然后,命令生成部350从信号线359提供预充电命令PRE,并从信号线358提供READ。
[当优先发布READ和WRITE时的命令生成部的操作实例]
图21是示出了本发明第三实施方式中命令生成部350在判定将READ的发布优先时的操作的示意图。顺便提及,为了方便起见,由命令生成部350进行的从R请求队列320和C请求队列330中提取(POP)并从而擦除R请求和C请求的操作由与信号线329和信号线339分离的虚线示意性地示出。
假设请求生成部310生成以下七个存储器请求,并将所生成的存储器请求提供给R请求队列320和C请求队列330,同时维持存储器请求的顺序。在该情况下示出的存储器请求指示存储器请求中的(请求ID,操作码,存储体号码,行地址,列地址,表示为存储器时钟的周期数的数据长度)。
假设第一输入存储器请求是(0,READ,1,37bf,048,4)、第二输入存储器请求是(1,READ,1,37bf,050,4)、以及第三输入存储器请求是(2,READ,0,37bf,048,4)。接下来,假设第四输入存储器请求是(3,READ,0,37bf,050,4)、第五输入存储器请求是(4,READ,0,37bf,058,4)、第六输入存储器请求是(5,READ,1,48c0,030,4)、以及第七输入存储器请求是(6,READ,1,48c0,038,4)。
此外,假设包括第六存储器请求信息的行选择信息是R请求队列320中的R请求。假设包括第三存储器请求信息的列选择信息是C请求队列中的C请求。进一步地,假设状态管理部340所保持的存储体信息指示在发布时间为“0”时,PRE对于存储体[1]是可经由信号线359发布的,并且在发布时间为“0”时,READ对于存储体[0]是可经由信号线359发布的。顺便提及,在该情况下,假设“BL”为“8”以及“tRPD”为“5”。此外,假设SDRAM 120除了“tRPD”之外的性能与图7中的相同。即,“tRPD”为“5”,“tRP”为“5”,以及“BL/2”为“4”。从而,“P”为2。
命令生成部350使R请求队列320输出R请求,使C请求队列330输出C请求,以及使状态管理部340输出存储体信息。然后,命令生成部350判定命令的可发布条件和可发布时间。进一步地,连同该判定,命令生成部350计算R请求的请求ID和C请求的请求ID之间的差值,并将所计算的差值与“P”和“A”进行比较。
结果,命令生成部350判定由于发布时间为“0”所以基于C请求的READ是可经由信号线359发布的、以及判定由于发布时间为“0”所以预充电命令PRE对于存储体[1]是可经由信号线359发布的。此外,由于R请求的请求ID和C请求的请求ID之间的差值为“3”,因此当在基于C请求的READ和指定存储体[1]的PRE之间发生命令冲突时,命令生成部350判定优先发布READ。即,作为在发布时间“0”时避免命令冲突的判定的结果,命令生成部350判定在发布时间“0”发布READ,而在发布时间“1”发布预充电命令PRE。
从这些判定中,命令生成部350生成用于指定存储体[0]中的列地址“048”并将存储体[0]中的列地址“048”设置为读取状态的READ,并生成指定存储体[1]的预充电命令PRE。然后,命令生成部350从信号线359提供READ,并从信号线358提供预充电命令PRE。
因此,根据本发明的第三实施方式,在使用请求ID来避免命令冲突时,通过判定命令的优先顺序,能够避免命令冲突,而不降低数据传送的效率。
因此,根据本发明的实施方式,可通过以存储器时钟频率的1/N来进行操作的命令生成部350生成N个命令来指定SDRAM 120的操作。即,根据本发明的实施方式,可通过频率低于存储器时钟频率的操作,来高效地生成多个命令。因此可以降低功耗并减少存储器控制器中的高频噪声。
顺便提及,前述实施方式假设R请求队列320将操作码、存储体号码和行地址作为行选择信息来保持,并且假设C请求队列330将操作码、存储体号码、列地址和数据长度作为列选择信息来保持。然而,R请求队列320和C请求队列330所保持的数据只表示实例,并且本发明并不局限于此。例如,R请求队列320和C请求队列330可保持存储器请求的所有信息,并且存储器请求的所有信息都可作为R请求和C请求输入到命令生成部350。因此,例如,也可以使用利用R请求和C请求的操作码、存储体号码、列地址以及数据长度来生成多个命令的装置作为命令生成部350。
应当注意,本发明的实施方式表示实施本发明的实例,并且如上所述,每个实施方式均与权利要求中的具体发明项相对应。然而,本发明并不局限于这些实施方式,并且在不背离本发明精神的情况下,各种修改都是容许的。
此外,本发明的实施方式中描述的处理步骤可理解为具有该系列步骤的方法,或可理解为用于使计算机执行该系列步骤的程序或存储程序的记录介质。作为存储介质,例如,可以使用CD(光盘)、MD(迷你光盘)、DVD(数字通用光盘)、存储卡、蓝光光盘(注册商标)等。
本领域技术人员应当理解的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和改进,均应包含在所附的权利要求或其等同物的范围之内。
Claims (12)
1.一种存储器控制装置,包括:
请求生成部,被配置为从对于各个存储体中的受控存储器的数据存取请求来生成存储器请求;
行选择信息保持部,被配置为将所述存储器请求中的多个操作码、指定所述存储体的存储体号码、以及指定所述存储体中行地址的行地址作为行选择信息保持,同时维持所述存储器请求的输入顺序;
列选择信息保持部,被配置为保持所述存储器请求中的多个所述操作码、所述存储体号码、指定所述存储体中的列地址的列地址、以及所要根据所述存储器请求而被存取数据的数据长度作为列选择信息,同时维持所述存储器请求的输入顺序;
存储体信息管理部,被配置为将所述存储器的操作状态作为对于各个所述存储体的存储体信息而管理;
命令生成部,被配置为基于所述行选择信息、所述列选择信息以及所述存储体信息,以低于所述存储器的存储器时钟频率的频率生成多个命令,所述命令指定与所述存储体有关的操作;以及
命令排列部,被配置为同步于所述存储器时钟排列所生成的所述多个命令。
2.根据权利要求1所述的存储器控制装置,其中,所述命令生成部以所述存储器时钟频率的1/N,生成N个所述命令,其中,N是2以上的整数。
3.根据权利要求1所述的存储器控制装置,其中,所述请求生成部根据所述数据存取请求的所述数据长度,生成以突发长度为单位的所述存储器请求。
4.根据权利要求1所述的存储器控制装置,其中,当在所述行选择信息保持部和所述列选择信息保持部中均存在空位时,所述请求生成部将新的存储器请求输入到所述行选择信息保持部和所述列选择信息保持部。
5.根据权利要求1所述的存储器控制装置,其中
所述行选择信息保持部通过对所述行选择信息执行先入先出操作的队列来形成,以及
当所述命令生成部基于所述行选择信息生成所述命令中指定所述行地址中的一个的命令时,或者当由所述行选择信息指定的所述行地址与所述存储体中被指定为数据存取目标的行地址相一致时,所述命令生成部从所述行选择信息保持部提取由所述行选择信息保持部所保持的所述行选择信息。
6.根据权利要求1所述的存储器控制装置,其中
所述列选择信息保持部通过对所述列选择信息执行先入先出操作的队列来形成,以及
当所述命令生成部基于所述列选择信息生成所述命令中指定所述列地址中的一个的命令时,所述命令生成部从所述列选择信息保持部提取由所述列选择信息保持部所保持的所述列选择信息。
7.根据权利要求1所述的存储器控制装置,还包括:
等待信息保持部,被配置为当所述命令生成部等待生成所述命令中指定所述行地址中的一个的命令时,从所述行选择信息保持部提取所述行选择信息,并保持所述行选择信息作为等待行选择信息,其中
所述命令生成部基于由所述行选择信息保持部保持的输入顺序中最旧的所述行选择信息、所述等待行选择信息、所述列选择信息以及所述存储体信息而生成所述命令。
8.根据权利要求1所述的存储器控制装置,其中
所述请求生成部为所述存储器请求提供作为所述存储器请求顺序的请求标识符,
所述行选择信息保持部进一步保持所述请求标识符中的一个作为所述行选择信息,
所述列选择信息保持部进一步保持所述请求标识符中的一个作为所述列选择信息,以及
当所述行选择信息的所述请求标识符和所述列选择信息的所述请求标识符之间的差值大于预定值时,所述命令生成部在所述命令中的另一个命令之前优先地生成指定所述列地址中的一个的命令。
9.根据权利要求1所述的存储器控制装置,还包括:
命令同步输出部,被配置为将所述命令生成部生成的多个所述命令以同步的定时输出到所述命令排列部,同时维持所述命令生成部的频率。
10.一种存储器控制装置,包括:
操作指定提供部,被配置为提供操作码、列地址和行地址,以生成指定关于存储器的操作的命令;
行选择信息保持部,被配置为保持用于生成所述命令的所述行地址作为行选择信息;
列选择信息保持部,被配置为保持所述操作码和所述列地址作为列选择信息;
存储器信息管理部,被配置为管理保持所述存储器中的激活状态的行地址以及生成所述命令的定时的存储器信息;
命令生成部,被配置为通过基于所述存储器信息和所述行选择信息,生成所述命令中的用于从所述存储体中读取与所述行地址对应的行数据的命令,并且通过基于所述存储器信息和所述列选择信息,生成所述命令中的用于从所述行数据读取与所述列地址中的一个对应的数据的命令,从而以低于所述存储器的存储器时钟频率的频率生成多个所述命令;以及
命令排列部,被配置为同步于所述存储器时钟排列所生成的多个所述命令。
11.一种存储器控制装置,包括:
请求生成装置,用于从对于各个存储体中的受控存储器的数据存取请求来生成存储器请求;
行选择信息保持装置,用于将所述存储器请求中的多个操作码、指定所述存储体的存储体号码、以及指定所述存储体中行地址的行地址作为行选择信息保持,同时维持所述存储器请求的输入顺序;
列选择信息保持装置,用于保持所述存储器请求中多个所述操作码、所述存储体号码、指定所述存储体中的列地址的列地址、以及所要根据所述存储器请求而被存取数据的数据长度作为列选择信息,同时维持所述存储器请求的输入顺序;
存储体信息管理装置,用于将所述存储器的操作状态作为对于各个所述存储体的存储体信息而管理;
命令生成装置,用于基于所述行选择信息、所述列选择信息以及所述存储体信息,以低于所述存储器的存储器时钟频率的频率生成多个命令,所述命令指定与所述存储体有关的操作;以及
命令排列装置,用于同步于所述存储器时钟排列所生成的所述多个命令。
12.一种存储器控制装置,包括:
操作指定提供装置,用于提供操作码、列地址和行地址,以生成指定关于存储器的操作的命令;
行选择信息保持装置,用于保持用于生成所述命令的所述行地址作为行选择信息;
列选择信息保持装置,用于保持所述操作码和所述列地址作为列选择信息;
存储器信息管理装置,用于管理保持所述存储器中的激活状态的行地址以及生成所述命令的定时的存储器信息;
命令生成装置,用于通过基于所述存储器信息和所述行选择信息,生成所述命令中的用于从所述存储体中读取与所述行地址对应的行数据的命令,并且通过基于所述存储器信息和所述列选择信息,生成所述命令中的用于从所述行数据读取与所述列地址中的一个对应的数据的命令,从而以低于所述存储器的存储器时钟频率的频率生成多个所述命令;以及
命令排列装置,用于同步于所述存储器时钟排列所生成的所述多个命令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009078275A JP5321189B2 (ja) | 2009-03-27 | 2009-03-27 | メモリ制御装置 |
JP2009-078275 | 2009-03-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101847131A true CN101847131A (zh) | 2010-09-29 |
CN101847131B CN101847131B (zh) | 2012-12-12 |
Family
ID=42771755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010139057.1A Active CN101847131B (zh) | 2009-03-27 | 2010-03-19 | 存储器控制装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8799565B2 (zh) |
JP (1) | JP5321189B2 (zh) |
KR (1) | KR101664486B1 (zh) |
CN (1) | CN101847131B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017017A (zh) * | 2015-10-05 | 2017-08-04 | 联发科技股份有限公司 | 用于存取动态随机存取存储器的计算系统以及相关存取方法 |
CN108304279A (zh) * | 2017-01-12 | 2018-07-20 | 爱思开海力士有限公司 | 存储器装置和存储器模块 |
CN115017072A (zh) * | 2022-08-08 | 2022-09-06 | 北京象帝先计算技术有限公司 | 突发长度拆分方法、装置、芯片系统和电子设备 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120005507A1 (en) * | 2010-07-01 | 2012-01-05 | Himax Technologies Limited | Display Devices and Control Methods |
KR101335367B1 (ko) * | 2012-04-26 | 2013-12-02 | 숭실대학교산학협력단 | 메모리 제어 장치 및 방법 |
US10126968B2 (en) | 2015-09-24 | 2018-11-13 | International Business Machines Corporation | Efficient configuration of memory components |
CN108139992B (zh) * | 2016-08-09 | 2020-06-16 | 华为技术有限公司 | 访问存储设备的方法和存储设备 |
US10379765B2 (en) * | 2017-06-27 | 2019-08-13 | Western Digital Technologies, Inc. | Geometry-aware command scheduling |
US20200210112A1 (en) * | 2020-03-13 | 2020-07-02 | Intel Corporation | Orthogonal multi-phase scheduling circuitry |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995027381A1 (en) * | 1994-04-05 | 1995-10-12 | Celsat America, Inc. | System and method for mobile communications in coexistence with established communications systems |
CN1189048A (zh) * | 1996-09-02 | 1998-07-29 | 三星电子株式会社 | 具有传送非压缩数字数据功能的数字接口装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0652034A (ja) * | 1992-08-03 | 1994-02-25 | Hitachi Ltd | メモリ制御方式 |
JP2500447B2 (ja) * | 1993-05-19 | 1996-05-29 | 日本電気株式会社 | メモリコピ―方式 |
AU5368696A (en) * | 1995-03-22 | 1996-10-08 | Ast Research, Inc. | Rule-based dram controller |
US5907863A (en) * | 1996-08-16 | 1999-05-25 | Unisys Corporation | Memory control unit using preloaded values to generate optimal timing of memory control sequences between different memory segments |
US6128716A (en) * | 1998-01-23 | 2000-10-03 | Motorola Inc. | Memory controller with continuous page mode and method therefor |
US6477598B1 (en) * | 2000-07-20 | 2002-11-05 | Lsi Logic Corporation | Memory controller arbitrating RAS, CAS and bank precharge signals |
US6631440B2 (en) * | 2000-11-30 | 2003-10-07 | Hewlett-Packard Development Company | Method and apparatus for scheduling memory calibrations based on transactions |
US6725347B2 (en) * | 2001-01-16 | 2004-04-20 | Sun Microsystems, Inc. | Spin-wheel SDRAM access scheduler for high performance microprocessors |
US20020194444A1 (en) * | 2001-06-14 | 2002-12-19 | Telgen Corporation | System and method for managing out-of-order memory access requests via an age-shifted index |
KR20050112973A (ko) * | 2004-05-28 | 2005-12-01 | 삼성전자주식회사 | 다중 쓰레드 파이프라인 버스 시스템의 메모리 컨트롤러및 메모리 제어 방법 |
JP4656862B2 (ja) * | 2004-05-28 | 2011-03-23 | ルネサスエレクトロニクス株式会社 | 半導体装置 |
JP2006099585A (ja) * | 2004-09-30 | 2006-04-13 | Canon Inc | データ処理装置 |
US8595459B2 (en) * | 2004-11-29 | 2013-11-26 | Rambus Inc. | Micro-threaded memory |
US7363406B2 (en) * | 2004-12-08 | 2008-04-22 | Motorola, Inc. | Dynamic access scheduling memory controller |
JP4786209B2 (ja) * | 2005-03-18 | 2011-10-05 | パナソニック株式会社 | メモリアクセス装置 |
US7336551B2 (en) * | 2005-11-30 | 2008-02-26 | Intel Corporation | Semiconductor memory devices and systems, and methods of using having reduced timers and registers |
US7788414B2 (en) * | 2007-01-16 | 2010-08-31 | Lantiq Deutschland Gmbh | Memory controller and method of controlling a memory |
JP2008225775A (ja) * | 2007-03-12 | 2008-09-25 | Sony Corp | メモリ制御装置 |
US8261121B2 (en) * | 2009-12-24 | 2012-09-04 | Nvidia Corporation | Command latency reduction and command bandwidth maintenance in a memory circuit |
-
2009
- 2009-03-27 JP JP2009078275A patent/JP5321189B2/ja active Active
-
2010
- 2010-01-14 US US12/656,045 patent/US8799565B2/en active Active
- 2010-02-17 KR KR1020100014162A patent/KR101664486B1/ko active IP Right Grant
- 2010-03-19 CN CN201010139057.1A patent/CN101847131B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1995027381A1 (en) * | 1994-04-05 | 1995-10-12 | Celsat America, Inc. | System and method for mobile communications in coexistence with established communications systems |
CN1189048A (zh) * | 1996-09-02 | 1998-07-29 | 三星电子株式会社 | 具有传送非压缩数字数据功能的数字接口装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107017017A (zh) * | 2015-10-05 | 2017-08-04 | 联发科技股份有限公司 | 用于存取动态随机存取存储器的计算系统以及相关存取方法 |
CN108304279A (zh) * | 2017-01-12 | 2018-07-20 | 爱思开海力士有限公司 | 存储器装置和存储器模块 |
CN115017072A (zh) * | 2022-08-08 | 2022-09-06 | 北京象帝先计算技术有限公司 | 突发长度拆分方法、装置、芯片系统和电子设备 |
CN115017072B (zh) * | 2022-08-08 | 2022-11-04 | 北京象帝先计算技术有限公司 | 突发长度拆分方法、装置、芯片系统和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US20100250841A1 (en) | 2010-09-30 |
KR101664486B1 (ko) | 2016-10-24 |
KR20100108198A (ko) | 2010-10-06 |
JP5321189B2 (ja) | 2013-10-23 |
CN101847131B (zh) | 2012-12-12 |
US8799565B2 (en) | 2014-08-05 |
JP2010231495A (ja) | 2010-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101847131B (zh) | 存储器控制装置 | |
JP4912718B2 (ja) | ダイナミック型半導体メモリ | |
US7603512B2 (en) | Dynamic memory refresh controller, memory system including the same and method of controlling refresh of dynamic memory | |
JP4084428B2 (ja) | 半導体記憶装置 | |
JP4615494B2 (ja) | ダイナミック・ランダム・アクセス・メモリ・システム | |
CN109154918A (zh) | 自刷新状态机mop阵列 | |
CN1707694B (zh) | 用于多线程流水线总线系统的存储控制器 | |
JP2002288037A (ja) | メモリ制御装置及び方法 | |
CN101233575A (zh) | 存储器的控制方法、存储系统 | |
KR100869987B1 (ko) | 반도체 메모리 | |
KR100914017B1 (ko) | 메모리 컨트롤러, 반도체 메모리의 액세스 제어 방법 및시스템 | |
KR100279137B1 (ko) | 반도체 메모리, 반도체 메모리의 데이타 판독 방법 및 기록방법 | |
KR100639743B1 (ko) | 복수 종류의 메모리 제어 방법 및 복수 종류의 메모리 제어회로 | |
TW200521674A (en) | Method and apparatus for implicit dram precharge | |
JP4085983B2 (ja) | 情報処理装置およびメモリアクセス方法 | |
JPH11224221A (ja) | メモリ制御装置および方法 | |
US6751712B2 (en) | Circuit and method for executing access control of virtual channel memory preventing deterioration of data transfer rate | |
KR100726101B1 (ko) | 메모리 제어 시스템 | |
WO2009125572A1 (ja) | メモリ制御回路及びメモリ制御方法 | |
CN100423081C (zh) | 硬件加速显示水平线段的装置及其方法 | |
JP3800164B2 (ja) | 情報処理装置、情報記憶装置、情報処理方法、及び情報処理プログラム | |
CN102243526A (zh) | 双倍数据速率内存的内存控制器及其控制方法 | |
JP2000067576A (ja) | 半導体記憶装置 | |
JPH09237492A (ja) | メモリ制御装置 | |
JP5393289B2 (ja) | メモリ制御回路、メモリシステム及び制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |