CN112764672B - 存储器控制器、存储装置及其控制方法以及记录介质 - Google Patents
存储器控制器、存储装置及其控制方法以及记录介质 Download PDFInfo
- Publication number
- CN112764672B CN112764672B CN201911112791.6A CN201911112791A CN112764672B CN 112764672 B CN112764672 B CN 112764672B CN 201911112791 A CN201911112791 A CN 201911112791A CN 112764672 B CN112764672 B CN 112764672B
- Authority
- CN
- China
- Prior art keywords
- host
- storage device
- memory
- memory controller
- state
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000012546 transfer Methods 0.000 claims abstract description 129
- 230000005540 biological transmission Effects 0.000 claims abstract description 49
- 230000004044 response Effects 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 28
- 238000004891 communication Methods 0.000 claims description 8
- 238000005516 engineering process Methods 0.000 claims description 6
- 230000001934 delay Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 13
- 101150098958 CMD1 gene Proteins 0.000 description 11
- 101100382321 Caenorhabditis elegans cal-1 gene Proteins 0.000 description 11
- 239000008186 active pharmaceutical agent Substances 0.000 description 10
- 101100232371 Hordeum vulgare IAT3 gene Proteins 0.000 description 9
- 101000711846 Homo sapiens Transcription factor SOX-9 Proteins 0.000 description 8
- 102100034204 Transcription factor SOX-9 Human genes 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 229940029329 intrinsic factor Drugs 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- 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
-
- 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
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/1615—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement using a concurrent pipeline structrure
-
- 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
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)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
- Supercharger (AREA)
Abstract
本文描述了存储器控制器、存储装置及其控制方法以及记录介质。一种存储装置的控制方法,其中当存储装置向主机传输数据时主机不能将命令传输至存储装置,此后存在数据传输延迟时间段,并且没有数据传输到主机直到从主机接收到读取命令,该控制方法包括如下步骤:在数据传输延迟时间段期间,每当从主机接收到读取命令时,由存储装置的存储器控制器检测主机的主机延迟时间;以及由存储器控制器基于检测到的主机延迟时间中的一个或多个来调节数据传输延迟时间段。
Description
相关申请的交叉引用
本申请要求于2019年10月21日在美国专利商标局提交的美国申请16/658,373的优先权,在此通过引用并入其全部内容。
技术领域
各个实施例一般地涉及数据存储技术,并且更具体地涉及用于存储装置的存储器控制器、存储装置、存储装置的控制方法以及记录介质。
背景技术
诸如计算机或服务器的计算装置执行程序以处理数据。例如,当提取照片、播放音频或视频、执行操作或执行网络通信时,计算装置经常需要请求存储装置以时间有效的方式执行数据读取操作。当在随机读取处理期间在数据读取操作之间存在较大的延迟时,该延迟可能会影响到整体读取效率。
在许多存储系统中,当存储装置和主机同时传输帧时,出现冲突。在这种情况下,存储装置相对于主机具有优先权。在这种情况下,当存储装置向主机发送直接存储器访问(DMA)设置帧信息结构(FIS)以进入数据传输步骤时,主机通常无法向存储装置发送任何命令。例如,主机需要停止将信息帧传输到存储装置,直到存储装置完成数据传输为止。
主机本身可能具有主机延迟。因此,当在主机将多个读取命令发送给存储装置之后存储装置响应于多个读取命令而连续地进入数据传输步骤时,只有在存储装置响应于多个读取命令而完成多个数据传输步骤之后,主机往往可以将新的读取命令传输到存储装置。在这种情况下,由于存储装置相对于主机具有优先权并且主机本身具有主机延迟,在数据读取操作之间会出现相对较大的延迟。因此,延迟可能影响到整个读取效率。
发明内容
在一个实施例中,提供了一种存储装置的控制方法,其中当所述存储装置向主机传输数据时所述主机不能将命令传输至所述存储装置,此后存在数据传输延迟时间段,并且没有数据传输到所述主机直到从所述主机接收到读取命令,所述控制方法包括如下步骤:在所述数据传输延迟时间段期间,每当从所述主机接收到读取命令时,由所述存储装置的存储器控制器检测所述主机的主机延迟时间;以及由所述存储器控制器基于检测到的主机延迟时间中的一个或多个来调节所述数据传输延迟时间段。
检测步骤可以包括:由所述存储器控制器设定所述数据传输延迟时间段的初始值;在所述数据传输延迟时间段期间,每次从所述主机接收到读取命令时,检测所述主机延迟时间;以及将所述主机延迟时间的检测重复由检测阈值定义的设定次数。
所述数据传输延迟时间段被调节为检测到的主机延迟时间的最大值。
所述数据传输延迟时间段用于直接存储器访问设置命令。
所述存储器控制器在第一状态下的操作期间执行所述检测,并且在第二状态下的操作期间执行所述调节,以及所述控制方法包括:当处于所述第二状态的存储器控制器在每个调节后的数据传输延迟时间段期间没有从所述主机接收到读取命令时,将所述存储器控制器从所述第二状态切换到所述第一状态以执行检测,并且重新检测所述主机的主机延迟时间。
所述控制方法进一步包括:当处于所述第一状态的所述存储器控制器在所述数据传输延迟时间段期间没有连续地从所述主机接收读取命令时,将所述存储器控制器从所述第二状态切换到第三状态,其中在处于所述第三状态的存储器控制器将数据传输到所述主机之后没有数据传输延迟时间段。
所述控制方法进一步包括:当处于所述第三状态的所述存储器控制器多次接收到来自主机的读取命令时,将所述存储器控制器从所述第三状态切换到所述第一状态以检测所述主机延迟时间。
所述存储装置使用基于串行高级技术附件(SATA)的协议与所述主机进行通信。
所述存储器控制器存储用于控制存储装置的处理器以执行所述控制方法的程序代码。
在一个实施例中,提供了一种用于存储装置的存储器控制器,其中当所述存储装置向主机传输数据时所述主机不能将命令传输至所述存储装置,此后存在数据传输延迟时间段,并且没有数据传输到所述主机直到从所述主机接收到读取命令,所述存储器控制器包括:主机接口,被配置为与所述主机通信;以及存储器控制部件,其耦合到所述主机接口,并且被配置为:通过所述主机接口与所述主机通信来从所述主机接收一个或多个命令,并且访问存储在所述存储装置中的数据;在所述数据传输时间段期间,每当从所述主机接收到读取命令时,检测所述主机的主机延迟时间;以及基于一个或多个检测的主机延迟时间来调节所述数据传输延迟时间段。
所述存储器控制部件将所述数据传输延迟时间段调节为检测到的主机延迟时间的最大值。
所述数据传输延迟时间段用于直接存储器访问设置命令。
所述存储器控制部件在第一状态下的操作期间检测所述主机的每个主机延迟时间;所述存储器控制部件在第二状态下的操作期间调节所述数据传输延迟时间段;并且当处于所述第二状态的所述存储器控制部件在每个调节后的数据传输延迟时间段期间没有从所述主机接收到读取命令时,所述存储器控制部件从所述第二状态切换到所述第一状态以重新检测所述主机的主机延迟时间。
当处于所述第一状态的所述存储器控制部件在所述数据传输延迟时间段期间没有连续地从所述主机接收读取命令时,所述存储器控制部件从所述第二状态切换到第三状态,其中在处于所述第三状态的所述存储器控制部件将数据传输到所述主机之后没有数据传输延迟时间段。
当处于所述第三状态的所述存储器控制部件多次接收到来自所述主机的读取命令时,所述存储器控制部件从所述第三状态切换到所述第一状态以检测所述主机延迟时间。
所述存储装置使用基于串行高级技术附件(SATA)的协议与所述主机进行通信
在一个实施例中,一种存储装置可以包括:被配置为存储数据的存储器;其中存储器控制器耦合至所述存储器,并且被配置为通过与主机的通信来访问所述存储装置的存储器。
包括所述存储器控制器的存储装置进一步包括:被配置为存储数据的存储器;以及其中存储器控制器耦合至所述存储器,并且被配置为通过与所述主机的通信来访问所述存储装置的存储器。
所述存储装置进一步包括存储器接口,其耦合到所述存储器并且被配置为访问所述存储器,其中所述存储器接口设置在存储器控制器内。
在一个实施例中,提供了一种存储装置的控制方法,其中响应于来自主机的一个或多个访问请求向所述主机提供响应,同时在每个响应的传输之后针对来自所述主机的后续访问请求而等待间歇时间的间隔;以及基于所述后续访问请求的一个或多个主机延迟来调节所述间歇时间,其中所述控制器和所述主机以半双工的方式提供所述响应和所述访问请求,并且其中每个所述主机延迟是从对应间歇时间的开始到对应访问请求的接收的时间。
附图说明
图1是示出根据实施例的存储装置的框图。
图2是示出图1的存储装置的存储器控制器的示例的框图。
图3是示出图1的存储装置的存储器控制器的另一示例的框图。
图4是示出根据实施例的存储装置的控制方法的流程图。
图5是示出根据实施例的图4的步骤S10的示例性操作的流程图。
图6是用于描述存储装置的数据传输延迟时间段的示例的图。
图7是用于描述根据实施例的检测主机的主机延迟时间的操作的图。
图8是用于描述根据实施例的估计存储装置的数据传输延迟时间段的操作的图。
图9是示出图4的存储装置的控制方法的另一实施例的状态图。
图10是用于描述图4中的存储装置的控制方法的应用的图。
具体实施方式
为了促进对本发明的目的、特征和效果的理解,参考附图在具体实施例的上下文中描述其细节。在整个说明书中,对“一个实施例”、“另一个实施例”等的引用不一定仅指一个实施例,并且对任何此类短语的不同引用不一定指同一实施例。
图1、图2和图3中的每一个示出了根据实施例的存储装置。图1、图2和图3中任一个中所示的存储装置或存储器控制器可以用于实现本文所示和描述的存储装置的特别地参考图4和图5的任何控制方法。
如图1所示,存储装置10可以包括存储器控制器11和存储器12。存储器12可以用于存储数据,并且包括多个存储器芯片120。例如,存储器芯片120可以是诸如NOR型存储器或NAND型存储器的闪存存储器,但是本发明不限于任何特定类型的存储器芯片。
存储器控制器11可以耦合到存储器12并且通过与主机90通信来接收主机90的命令,并且根据该命令访问存储装置10的存储器12。例如,主机90可以是诸如计算机或服务器的计算装置。
存储装置10可以进一步包括缓冲器13,并且缓冲器13可以利用易失性存储器或非易失性存储器来实现。缓冲器13可以被包括在存储器控制器11中,或者布置在存储器控制器11的外部。当存储装置10的存储器12被访问时,缓冲器13可以用于存储命令队列或临时存储来自主机90或存储器12的数据。此外,缓冲器13可以用于存储将由存储器控制器11的处理器(例如微处理器等)执行的程序代码。
如图2所示,根据另一实施例的存储装置10A可以包括存储器控制器11A、存储器接口115和存储器12。存储器控制器11A可以通过存储器接口115耦合到存储器12,通过与主机90的通信来接收主机90的命令,并且根据该命令请求存储器接口115对存储装置10A的存储器12执行访问操作。例如,存储器接口115可以是闪存存储器控制器。存储器控制器11A可以包括主机接口110和存储器控制部件111。主机接口110可以与主机90通信,并且存储器控制部件111可以耦合到主机接口110,通过借助主机接口110与主机90的通信来从主机90接收一个或多个命令,以及访问存储装置10A的数据。主机接口110可以基于主机90和存储装置10A之间使用的传输协议来实现。例如,假设存储装置10A使用基于SATA(串行高级技术附件)的协议与主机90通信,主机接口110可以是SATA接口控制器。
如图3所示,存储装置10B的存储器控制器11B可以包括主机接口110、存储器控制部件111和存储器接口115。在各种其它实施例中,存储装置可以是串行连接的存储装置、SCSI/SAS存储装置、光纤通道(FC)存储装置、USB存储装置或其它存储装置。本发明不限于任何特定类型的存储装置。
图4是示出根据实施例的存储装置的控制方法的流程图。图4所示的实施例可以应用于图1、图2或图3所示的存储装置或存储器控制器。当存储装置10、10A或10B向主机90传输数据时,主机90不能向存储装置传输命令。也就是说,存储装置(例如,10、10A或10B)和主机90以半双工方式相互提供信号。如图4所示,根据实施例的存储装置10、10A或10B的控制方法可以包括步骤S10和步骤S20。
在步骤S10中,存储器控制器11、11A或11B在向主机90传输数据之后可以具有数据传输延迟时间段。每当在数据传输延迟时间段期间从主机90接收读取命令时,存储装置10、10A或10B的存储器控制器11、11A或11B可以多次检测主机90的主机延迟时间。在数据传输延迟时间段期间,存储器控制器11、11A或11B可能不向主机90传输任何数据,直到接收到主机90的读取命令。主机延迟时间是从开始数据传输到接收读取命令的时间段。
在步骤S20中,存储器控制器11、11A或11B可以基于由存储器控制器11、11A或11B检测到的多个主机延迟时间来调节数据传输延迟时间段。
当实现图4的控制方法时,可以通过存储器控制部件111或存储器控制器11、11A或11B的主机接口110来执行这些步骤。
图4的控制方法可以实现基于检测到的主机延迟时间来调节存储装置10、10A或10B的数据传输延迟时间段的操作。例如,图4的控制方法可以帮助存储装置10、10A或10B找到当前适合于主机90的数据传输延迟时间段。一些实施例可以用于在主机90向存储装置10、10A或10B发送读取命令时提高效率,从而在主机90对存储装置10、10A或10B执行随机读取操作时提高效率。
例如,在许多存储系统中,当在存储装置10、10A或10B和主机90同时传输信息帧时在存储装置10、10A或10B与主机90之间发生冲突时,存储装置10、10A或10B可以相对于主机90具有优先权。因此,当存储装置10、10A或10B向主机90传输数据时,主机90不能向存储装置10、10A或10B传输命令。此外,由于主机90的内在因素(这取决于每个制造商、型号或规格而不同)而存在主机延迟并且主机90很可能由于诸如操作环境的外部因素而改变,在多个因素混合的情况下,主机延迟时间可能往往在一个范围内变化。
在这种情况下,通过根据本实施例的存储装置10、10A或10B的控制方法的步骤S10,存储器控制器11、11A或11B可以在向主机90传输数据之后具有数据传输延迟时间段。当数据传输延迟时间段的初始值被设定为大于主机延迟时间的值时,主机90向存储装置10、10A或10B发送读取命令的机会数可以通过步骤S10增加。因此,可以检测主机延迟时间。
由于数据传输延迟时间段可以增加数据传输步骤之间的时间,通过步骤S20,存储器控制器11、11A或11B可以根据检测到的主机延迟时间来调节存储装置10、10A或10B的数据传输延迟时间段。例如,存储器控制器11、11A或11B可以帮助存储装置10、10A或10B找到当前适合于主机90的数据传输延迟时间段。因此,存储装置10、10A或10B可以被用于改善当主机90向存储装置10、10A或10B发送读取命令时的效率,从而改善当主机90对存储装置10、10A或10B执行随机读取操作时的效率。
以下在多个实施例的上下文中描述基于图4的控制方法的各种实现。
图5是示出图4的步骤S10的示例的流程图。步骤S10可以包括步骤S100、S120和S130。
在步骤S100中,存储器控制器11、11A或11B可以将数据传输延迟时间段设置为参考值以便检测主机延迟时间。
在步骤S110中,当读取命令在数据传输延迟时间段期间从主机90被接收时,存储器控制器11、11A或11B可以检测主机延迟时间。例如,存储器控制器11、11A或11B可以通过记录从数据传输延迟时间段的开始到主机90的读取命令被接收所经过的时间来检测主机延迟时间,并且显示检测到的主机延迟时间。
在步骤S120中,存储器控制器11、11A或11B可以对主机延迟时间被检测到的次数进行计数以生成检测计数,并且检查检测计数是否达到检测计数阈值。例如,检测计数阈值可以被设置为10、100、200、500、1000或其它合适的值。当检测计数未达到检测计数阈值时,存储器控制器11、11A或11B可以再次执行步骤S110以检测主机的主机延迟。
当检测计数达到检测计数阈值时,存储器控制器11、11A或11B可以在步骤S130中执行其他处理。步骤S130可以以各种方式实现。例如,步骤S130可以包括停止检测和执行步骤S20。例如,步骤S130可以包括基于检测到的主机延迟时间来确定一个估计值,并且可以在步骤S20被执行时使用该估计值。然而,S130的操作不限于上述示例。
图6是用于描述存储装置10、10A或10B的数据传输延迟时间段的示例的图。图6分别示出了关于主机90和存储装置10、10A或10B的时间线,并且示出了主机90和存储装置10、10A或10B根据时间变化通过其传输信道传输信息的相继顺序。图6的时间轴从左向右运行。在图6中,实心块(例如DS0、DA0等)可以指示由主机90或存储装置10、10A或10B传输的信息,例如命令、数据或信息帧,并且存储装置10、10A或10B的时间线中的虚线块可以指示数据传输延迟时间段。
以下描述基于这样的假设,即,在主机90和存储装置10、10A或10B之间使用基于SATA的传输信道,但本发明不限于此。如图6所示,存储装置10、10A或10B或存储器控制器11、11A或11B可以响应于由主机90传输的先前读取命令而将数据传输到主机90。例如,存储装置10、10A或10B可以传输信息帧DS0、DA0和SDB0,从而完成针对读取命令的数据传输。
在信息帧之中,例如,DS0可以表示由存储装置10、10A或10B传输到主机90的DMA设置FIS,DA0可以表示由存储装置10、10A或10B传输到主机90的数据FIS,并且SDB0可以表示由存储装置10、10A或10B传输到主机90的设定装置位FIS。
上述示例的信息帧可以在基于SATA的传输协议中被定义,但本发明不限于该示例。
在步骤S10或S120中,存储器控制器11、11A或11B可以在将数据传输到主机90之后具有数据传输延迟时间段,以便执行检测。回到图6,在传输信息帧SDB0之后,存储装置10、10A或10B可以等待与图6中以虚线块TD表示的数据传输延迟时间段相对应的时间T1。
例如,数据传输延迟时间段TD可以用于DMA设置命令。
在数据传输延迟时间段TD期间,存储装置10、10A或10B或存储器控制器11、11A或11B可能不向主机90传输任何数据,直到存储装置10、10A或10B或存储器控制器11、11A或11B从主机90接收到读取命令。
下面描述两种情况,一种是主机90在数据传输延迟时间段TD期间不发送读取命令,另一种是主机90在数据传输延迟时间段TD期间发送读取命令。
如图6所示,在数据传输延迟时间段TD期间,主机90可以不发送读取命令。因此,在数据传输延迟时间段TD期间,存储装置10、10A或10B或存储器控制器11、11A或11B可能不将任何数据传输到主机90。当存储装置10、10A或10B或存储器控制器11、11A或11B在数据传输延迟时间段TD结束之后具有仍然未被处理的多个读取命令时(例如当在TD结束之后针对由主机90之前已传输的读取命令的数据传输操作没有被完全执行时),存储装置10、10A或10B或存储器控制器11、11A或11B可以在TD结束之后向主机90传输数据。例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以在TD结束之后传输信息帧DS1、DA1和SDB1,从而完成针对一个读取命令的数据传输。该信息帧可以具有与信息帧DS0、DA0和SDB0相同的含义,并且信息帧符号的数字0和1可以指示相继顺序。然而,本发明不限于上述示例。
图7是用于描述检测主机延迟时间的操作的示例的图。如图7所示,主机90可以在数据传输延迟时间段T1期间传输读取命令,例如信息帧H2D。例如,信息帧H2D可以指示由主机90传输到存储装置10、10A或10B的主机到装置FIS。信息帧H2D可以在基于SATA的传输协议中被定义,但本发明不限于这些细节。
在步骤S110中,当读取命令在数据传输延迟时间段T1期间从主机90被接收时,可以检测主机延迟时间。例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以在数据传输延迟时间段T1开始时启动计时器,并且在接收到主机90的读取命令时停止计时器。此时,由定时器获取的时间值可以被设定为检测到的主机延迟时间,例如,图7中由HL指示的时间。定时器可以以任何合适的方式来实现,例如通过模拟电路、逻辑电路、固件、程序及其组合来实现。
当假设存储装置10、10A或10B或存储器控制器11、11A或11B除了由信息帧H2D表示的读取命令之外没有要处理的读取命令时,存储装置10、10A或10B或存储器控制器11、11A或11B可以响应于先前的读取命令而恢复将针对读取命令的数据传输到主机90。例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以传输信息帧D2H、DS1、DA1和SDB1,从而完成针对先前读取命令的数据传输。例如,信息帧D2H可以指示由存储装置10、10A或10B传输到主机90的装置到主机FIS。信息帧D2H可以在基于SATA的传输协议中被定义,但本发明不限于此协议。
如参考图6和图7的示例所述,可以在主机90和存储装置10、10A或10B之间执行各种读取命令或数据传输操作。因此,存储装置10、10A或10B或存储器控制器11、11A或11B可以检测多个主机延迟时间(针对一次传输检测一个),并且计数主机延迟时间被检测到的次数。在检测计数达到阈值之后,存储装置10、10A或10B或存储器控制器11、11A或11B可以使用检测到的主机延迟时间中的一个或多个来调节数据传输延迟时间段T1。例如,当数据传输延迟时间段T1的初始值被设置为2.2μs时,在执行100次或更多次检测之后,检测到的主机延迟时间可以落在0.8到1.2μs的区域范围内。因此,存储装置10、10A或10B或存储器控制器11、11A或11B可以选择检测到的主机延迟时间的最大值,例如1.2μs,并且基于最大值来调节数据传输延迟时间段T1。
例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以将数据传输延迟时间段T1从2.2μs调节为1.2μs,或者进一步向1.2μs的调节后的数据传输延迟时间段增加允许的附加时间。允许的附加时间可以是一个恒定值,或者可以与检测到的主机延迟时间的范围有关。例如,0.2μs((1.2-0.8)/2=0.2)可以作为允许的附加时间。例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以基于主机延迟时间区域的最大值来调节数据传输延迟时间段T1以适应于各种条件,从而增加了在主机90将读取命令发送到存储装置10、10A或10B之后读取命令将被成功接收的机会数。
此外,当调节后的数据传输延迟时间段T1小于数据传输延迟时间段T1的初始值时,可以提高整个数据读取效率。特别地,在多个随机读取操作期间,主机90可以在调节后的数据传输延迟时间段T1期间有效地传输读取命令。在另一个实施例中,存储装置10、10A或10B或存储器控制器11、11A或11B可以基于检测到的主机延迟时间的平均值或检测到的主机延迟时间的最大值或最小值来调节数据传输延迟时间段T1。数据传输延迟时间段T1还可以使用检测到的主机延迟时间的其他统计信息来被调节。
例如,存储装置10、10A或10B或存储器控制器11、11A或11B可以将数据传输延迟时间段T1设定为大于一般主机延迟时间的值。
图8是用于描述估计存储装置10、10A或10B的数据传输延迟时间段的操作的图。如图8所示,可以定义参数x、y和z以便估计一个随机读取操作所需的处理时间。
这里,x表示主机延迟时间,y表示在主机90传输一个读取命令之后直到存储装置10、10A或10B响应于该读取命令而生成信息帧所需的时间。例如,y可以包括信息帧H2D和D2H的时间。此外,z表示响应于来自主机90的读取命令而将从存储装置10、10A或10B读取的数据传输到主机90所需的时间。例如,z可以包括信息帧DS、DA和SDB的时间。
一次随机读取操作所需的处理时间pt可以由pt=x+y+z(单位:微秒,μs)来估计。每秒的输入/输出操作(IOPS)可以是用于测试存储装置10、10A或10B的性能的测量参数。IOPS可以被视为每秒的读取/写入操作的数目。基于一次随机读取操作所需的处理时间,IOPS可以在等式1中被表示如下。
[等式1]
IOPS=(1/pt)×1000000=(1/(x+y+z))×1000000
下面描述数据传输延迟时间段的初始值通过图7的参数x、y和z以及公式1来被估计的示例。在本示例中,期望的IOPS可以被设置为目标值,并且目标值可以基于要由存储装置10、10A或10B实现的值来被确定。由于参数y和z的处理时间可以通过推断或估计来获得,参数x可以根据如下所示的等式2来计算。
[等式2]
x=(1000000/IOPS)-y-z
例如,当期望的IOPS=80000、y=1.5μs并且z=8.8μs时,x=(1000000/80000)-1.5-8.8=2.2μs。
因此,最大允许主机延迟时间(例如,2.2μs)可以被采取作为数据传输延迟时间段的初始值。然而,数据传输延迟时间段的初始值也可以通过其他方法来被确定。例如,数据传输延迟时间段的初始值可以基于过去的结果或实验来被估计。
在一些实施例中,图4的控制方法可以由存储器控制器11、11A或11B的状态机方法来实现。例如,图4的控制方法可以由具有第一状态和第二状态的状态机来实现。再例如,图4的控制方法可以由具有第一状态、第二状态和第三状态的状态机来实现。
在图4的控制方法的一个实施例中,存储装置10、10A或10B的存储器控制器11、11A或11B可以在第一状态下执行步骤S10,在第二状态下执行步骤S20。
根据实施例的控制方法可以进一步包括:当主机延迟时间被检测到的次数达到检测计数阈值时,将存储器控制器11、11A或11B从第一状态切换到第二状态以执行步骤S20。此外,根据实施例的控制方法可以进一步包括:当检测计数达到检测计数阈值时获取检测到的主机延迟时间之一。该主机延迟时间可以在步骤S20在第二状态下被执行时被使用。例如,存储器控制器11、11A或11B可以根据该值来调节数据传输延迟时间段。如上所示,在检测计数达到阈值之后,存储装置10、10A或10B或存储器控制器11、11A或11B可以使用检测到的主机延迟时间来调节数据传输延迟时间段T1。例如,当数据传输延迟时间段T1的初始值被设置为2.2μs时,在与检测计数阈值相对应地多次执行检测之后,检测到的主机延迟时间可以落在0.8到1.2μs的范围内。因此,存储装置10、10A或10B或存储器控制器11、11A或11B可以选择检测到的主机延迟时间的最大值,例如1.2μs,并且基于最大的检测到的主机延迟时间来调节数据传输延迟时间段T1。
根据实施例的控制方法可以进一步包括:当在存储器控制器11、11A或11B处于第二状态时在已经被调整的数据传输延迟时间段期间没有连续地从主机90接收到读取命令时,例如,当在存储器控制器11、11A或11B处于第二状态时未从主机90接收到读取命令的次数达到阈值时,将存储器控制器11、11A或11B从第二状态切换到第一状态以再次执行步骤S10并且重新检测主机延迟。根据一个实施例,存储装置10、10A或10B的存储器控制器11、11A或11B又可以调整数据传输延迟时间段,从而促进主机90有效地传输读取命令。
在利用状态机实现图4的控制方法时,该状态机可以具有不同的状态数。这样,存储装置10、10A或10B可以学习调节数据传输延迟时间段,从而找到合适的数据传输延迟时间段来处理主机90的主机延迟情况。因此,可以提高数据读取效率。
根据一个实施例的图4的控制方法可以进一步包括:当处于第一状态的存储器控制器11、11A或11B在数据传输延迟时间段期间没有从主机90连续地接收读取命令时,例如,当在存储器控制器11、11A或11B处于第一状态时未从主机90接收到读取命令的次数达到阈值时,将存储器控制器11、11A或11B从第一状态切换到第三状态。
在第三状态中,在存储器控制器11、11A或11B在第三状态下向主机90传输数据之后,没有数据传输延迟时间段。当在存储装置10、10A或10B的存储器控制器11、11A或11B已经调节了数据传输延迟时间段之后、主机90不需要读取数据或不需要连续读取数据时,根据实施例的控制方法可以将存储器控制器11、11A或11B切换到第三状态以移除数据传输延迟时间并且停止检测主机延迟时间。因此,该控制方法可以帮助存储装置10、10A或10B避免由于不必要的检测而导致的计算资源的负担。
根据实施例的图4的控制方法可以进一步包括:当在存储器控制器11、11A或11B处于第三状态时存储器控制器11、11A或11B从主机90多次接收到读取命令时,例如当在存储器控制器11、11A或11B处于第三状态时从主机90接收读取命令的次数达到阈值时,将存储器控制器11、11A或11B从第三状态切换到第一状态以检测主机延迟时间。在一个实施例中,当在存储装置10、10A或10B的存储器控制器11、11A或11B调节数据传输延迟时间段之后、主机90重新传输多个读取命令时,存储器控制器11、11A或11B切换到第一状态以重新检测主机延迟时间。
图9是示出图4中的存储装置10、10A或10B的控制方法的另一实施例的状态图。如图9所示,图4的控制方法可以通过具有第一状态至第三状态的状态机来实现,并且包括关于第一状态至第三状态的一个或多个实施例。因此,存储装置10、10A或10B可以学习调节数据传输延迟时间段,从而找到合适的数据传输延迟时间段来处理主机90的主机延迟情况。因此,可以提高数据读取效率。此外,存储装置10、10A或10B可以使用第三状态来避免由不必要的检测引起的计算资源的负担。当确定主机90多次读取数据时,存储装置10、10A或10B可以重新检测主机延迟时间,并且调节数据传输延迟时间段。因此,存储装置10、10A或10B可以动态地处理主机90的主机延迟变化,从而提高数据读取效率。
然而,本发明不限于上述示例。例如,当下次进入第一状态时,在主机传输读取命令之后的调节后的数据传输延迟时间段可以被设定为数据传输延迟时间段的初始值。例如,调节后的数据传输延迟时间段可以被存储在存储装置10、10A或10B中并且在之后被使用。
图10是用于描述在根据情况应用控制方法时图4中的存储装置10、10A或10B的控制方法的示例的图。在一个实施例中,存储装置10、10A或10B可以通过基于SATA的协议与主机90通信。
如图10所示,从块1210延伸的时间轴可以指示主机90通过传输信道将信息帧H2D传输到存储装置10、10A或10B的相继顺序。例如,对应于块1210的垂直线部分可以指示主机90传输表示第一组读取命令CMD1的信息帧H2D的情况。
从块1221延伸的时间轴可以指示存储装置10、10A或10B响应于由主机90传输的读取命令(例如,第一组读取命令CMD1)而通过传输信道传输信息帧D2H的相继顺序。图中的垂直线部分可以指示存储装置10、10A或10B传输信息帧D2H的情况。垂直线部分可以位于相应信息帧H2D的后面。
从块1222延伸的时间轴可以指示存储装置10、10A或10B响应于由主机90传输的读取命令(例如,第一组读取命令CMD1)而通过传输信道传输信息帧DS的相继顺序。图中的垂直线部分可以指示存储装置10、10A或10B传输信息帧DS的情况。
从块1223延伸的时间轴可以指示存储装置10、10A或10B响应于由主机90传输的读取命令(例如,第一组读取命令CMD1)而通过传输信道传输信息帧DA的相继顺序。图中的小块可以指示存储装置10、10A或10B传输信息帧DA以便将与读取命令相对应的数据传输到主机90的情况。
从块1224延伸的时间轴可以指示存储装置10、10A或10B响应于由主机90传输的读取命令(例如,第一组读取命令CMD1)而通过传输信道传输信息帧SDB的相继顺序。图中的垂直线部分可以指示存储装置10、10A或10B传输信息帧SDB的情况。
如图10所示,存储装置10、10A或10B响应于由主机90传输的读取命令(例如,第一组读取命令CMD1)而通过传输信道根据时间变化来传输信息帧D2H、DS、DA和SDB的顺序可以在基于SATA的传输协议中被定义。例如,SATA版本II或更高版本可以支持“原生命令队列(NCQ)”的操作模式。在NCQ的操作模式中,可以在存储装置10、10A或10B中提供最多32个命令队列,以便接收来自主机90的命令。命令队列可以由缓冲器13实现。然而,本发明实施例不限于上述示例。
回到图10,在时间段P1期间由主机90传输到存储装置10、10A或10B的第一组读取命令CMD1可以包括32个随机读取命令或其它数目的随机读取命令。例如,随机读取命令可以指示用于读取4KB或更小的数据的读取命令。换句话说,在NCQ的操作模式下,主机90可以一次传输多个读取命令,并且等待存储装置10、10A或10B将数据传输到主机90。在时间段P1期间,存储装置10、10A或10B可以响应于第一组读取命令CMD1而将多个信息帧D2H传输到主机90。
由于即使在将多个信息帧D2H完全传输到主机90之后存储装置10、10A或10B可能仍然在处理第一组读取命令CMD1之中的第一读取命令,可以存在由图10中的时间段P2指示的等待时间。
在时间段P3期间,存储装置10、10A或10B可以响应于第一组读取命令CMD1的第一读取命令而开始将信息帧DS、DA和SDB传输到主机90,并且因此响应于第一组读取命令CMD1的第一读取命令而完成第一数据传输操作。
如由时间段P4所示,在第一数据传输操作之后可以存在足够的数据传输延迟时间段T1(参考图7)。因此,主机90可以在时间段P4或数据传输延迟时间段T1期间将第二组读取命令CMD2的第一读取命令传输到存储装置10、10A或10B,并且存储装置10、10A或10B还可以响应于第二组读取命令CMD2的第一读取命令而提供信息帧D2H。随后,存储装置10、10A或10B可以响应于第一组读取命令CMD1的第二读取命令而将信息帧DS、DA和SDB传输到主机90,并且因此响应于第一组读取命令CMD1的第二读取命令而完成第二数据传输操作。
以此方式,在第一组的数据传输时间段DATA1期间,存储装置10、10A或10B可以响应于第一组读取命令CMD1的多个读取命令而将信息帧DS、DA和SDB逐组地传输到主机90,并且因此完成响应于第一组读取命令CMD1的多个数据传输操作。由于在每个数据传输操作之后存在足够的数据传输延迟时间段T1(参见图7),例如时间段P4,因此主机90可以将第二组读取命令CMD2的下一读取命令传输到存储装置10、10A或10B,并且存储装置10、10A或10B还可以响应于第二组读取命令CMD2的下一读取命令而对读取命令提供信息帧D2H。
当数据传输延迟时间段DATA2响应于第二组读取命令CMD2而开始时,存储装置10、10A或10B可以响应于第二组读取命令CMD2的第一读取命令而开始将信息帧DS、DA和SDB传输到主机90,并且因此响应于第二组读取命令CMD2的第一读取命令而完成一个数据传输操作。此外,由于可以以相同的方式执行后续操作,可以省略对其的描述。然而,本发明不限于上述示例。
如图10所示,通过图4的控制方法的实施例,可以基于检测到的主机延迟时间来调节存储装置10、10A或10B的数据传输延迟时间段。在数据传输延迟时间段被调节之后,在存储装置10、10A或10B响应于前一组读取命令(例如,第一组读取命令CMD1)的读取命令而一组又一组地传输信息帧DS、DA和SDB时,由于足够的数据传输延迟时间段,主机90可以传输下一个读取命令,例如第二组读取命令CMD2中的一个命令。
当存储装置10、10A或10B响应于如图10所示的第一组读取命令CMD1的每个读取命令而传输数据时,主机90可以通过有效地使用调节后的数据传输延迟时间段来逐个传输第二组读取命令CMD2的读取命令。第二组读取命令CMD2可以包括32个随机读取命令或其他数目的随机读取命令,并且随机读取命令可以指示例如用于读取4KB或更小的数据的读取命令。
图10示出了存储装置10、10A或10B的存储器控制器11、11A或11B自行调节数据传输延迟时间段的情况,使得主机90根据图4的控制方法来传输第一组读取命令CMD1,然后有效地传输第二组读取命令CMD2,以便有效地操作传输信道。然而,传统的存储装置不调节数据传输延迟时间段。因此,当数据传输延迟时间段不足以使主机90传输读取命令时,主机90需要等待直到存储装置完成针对第一组读取命令CMD1的所有数据传输操作,然后才能传输第二组读取命令CMD2。如参考图10所示的实施例所述,图4的控制方法可以用于提高当主机90向存储装置10、10A或10B传输读取命令时的效率,从而提高当主机90对存储装置10、10A或10B执行随机读取操作时的效率。
一些实施例包括非暂时可读记录介质,其记录用于控制一个存储装置10、10A或10B的处理器(例如,存储器控制器11、11A或11B)以执行图4的控制方法的程序代码,并且该方法可以包括图4的方法的一个或多个上述实施例或其组合。例如,程序代码可以包括用于实现图4的步骤S10和S20、图5的步骤S100和S130、图4的控制方法的状态机的一个实施例或其组合的一个或多个程序或程序模块。这些模块的程序代码可以协同操作并可以以任何合适的顺序执行或者并行执行。当处理器执行这样的程序代码时,存储装置10、10A或10B可以执行图4的控制方法的实施例。可读记录介质的示例可包括固件、ROM、RAM、存储器卡、光信息存储介质、磁信息存储介质或任何其他适当类型的存储介质或存储器,并且本发明的实现不限于该示例。
在与存储装置10、10A或10B或存储器控制器11、11A或11B相关的实施例中,主机接口110、存储器控制部件111和/或存储器接口115或其组合可以利用一个或多个电路来实现。例如,主机接口110、存储器控制部件111和/或存储器接口115或其组合可以利用处理器、数字信号处理器、微控制装置、现场可编程门阵列(FPGA)和可编程集成电路(如专用集成电路(ASIC))的一个或多个电路来实现,并且可以利用专用电路或模块来实现。存储器控制器11、11A或11B可以被实现为单个芯片。此外,由存储器控制器11、11A或11B或存储器控制部件执行的检测或调节可以通过诸如处理、线程或程序模块的软件方法或其它软件方法来实现。然而,本发明的实现不限于上述示例。
在存储器控制器、存储装置、存储装置的控制方法和记录介质的上下文中描述了本发明的各种实施例。因此,可以基于检测到的主机延迟时间来调节存储装置10、10A或10B的数据传输延迟时间段。例如,这些实施例可以帮助存储装置10、10A或10B找到当前适合于主机90的数据传输延迟时间段。因此,这些实施例可以用于提高当主机90将读取命令传输到存储装置10、10A或10B时的效率,从而提高当主机90对存储装置10、10A或10B执行随机读取操作时的效率。
根据各种实施例,可以提供用于存储装置的存储器控制器、存储装置、存储装置的控制方法和记录介质,其可以基于主机的一个或多个检测到的主机延迟时间来调节存储装置的数据传输延迟时间段。例如,可以帮助存储装置找到当前适合于主机的数据传输延迟时间段。因此,一些实施例可以用于提高当主机向存储装置发送读取命令时的效率,从而提高当主机对存储装置执行随机读取操作时的效率。
虽然以上已经说明和描述了各种实施例,但是本领域技术人员将理解,所描述的实施例仅是示例。因此,本发明不限于所描述的实施例。相反,本发明进一步包括所描述的实施例的落入权利要求及其等价物范围内的所有修改和变化。
Claims (19)
1.一种存储装置的控制方法,其中当所述存储装置向主机传输数据时所述主机不能将命令传输至所述存储装置,在所述存储装置向所述主机传输数据之后存在数据传输延迟时间段,并且没有数据传输到所述主机直到从所述主机接收到读取命令,所述控制方法包括如下步骤:
在所述数据传输延迟时间段期间,每当从所述主机接收到读取命令时,由所述存储装置的存储器控制器检测所述主机的主机延迟时间;以及
由所述存储器控制器基于检测到的所述主机延迟时间中的一个或多个来调节所述数据传输延迟时间段,
其中所述主机延迟时间被配置为包括从所述数据传输延迟时间段的开始到所述主机的所述读取命令被接收所经过的时间。
2.根据权利要求1所述的控制方法,其中所述检测包括:
由所述存储器控制器设定所述数据传输延迟时间段的初始值;
在所述数据传输延迟时间段期间,每当从所述主机接收到所述读取命令时检测所述主机延迟时间;以及
将所述主机延迟时间的所述检测重复由检测阈值定义的设定次数。
3.根据权利要求1所述的控制方法,其中所述数据传输延迟时间段被调节为检测到的所述主机延迟时间的最大值。
4.根据权利要求1所述的控制方法,其中所述数据传输延迟时间段被用于直接存储器访问设置命令。
5.根据权利要求1所述的控制方法,其中所述存储器控制器在第一状态下的操作期间执行所述检测,并且在第二状态下的操作期间执行所述调节,以及
所述控制方法包括:当处于所述第二状态的所述存储器控制器在每个调节后的数据传输延迟时间段期间没有从所述主机接收到读取命令时,将所述存储器控制器从所述第二状态切换到所述第一状态以执行检测,并且重新检测所述主机的所述主机延迟时间。
6.根据权利要求5所述的控制方法,进一步包括:当处于所述第一状态的所述存储器控制器在所述数据传输延迟时间段期间没有连续地从所述主机接收读取命令时,将所述存储器控制器从所述第二状态切换到第三状态,其中在处于所述第三状态的所述存储器控制器将数据传输到所述主机之后没有数据传输延迟时间段。
7.根据权利要求6所述的控制方法,进一步包括:当处于所述第三状态的所述存储器控制器多次接收到来自所述主机的读取命令时,将所述存储器控制器从所述第三状态切换到所述第一状态以检测所述主机延迟时间。
8.根据权利要求1所述的控制方法,其中所述存储装置使用基于串行高级技术附件(SATA)的协议与所述主机进行通信。
9.根据权利要求1所述的控制方法,其中所述存储器控制器存储用于控制存储装置的处理器以执行所述控制方法的程序代码。
10.一种用于存储装置的存储器控制器,其中当所述存储装置向主机传输数据时所述主机不能将命令传输至所述存储装置,在所述存储装置向所述主机传输数据之后存在数据传输延迟时间段,并且没有数据传输到所述主机直到从所述主机接收到读取命令,所述存储器控制器包括:
主机接口,被配置为与所述主机通信;以及
存储器控制部件,被耦合到所述主机接口,并且被配置为:
通过所述主机接口与所述主机通信来从所述主机接收一个或多个命令,并且访问存储在所述存储装置中的数据;
在所述数据传输延迟时间段期间,每当从所述主机接收到读取命令时,检测所述主机的主机延迟时间;以及
基于检测到的所述主机延迟时间中的一个或多个来调节所述数据传输延迟时间段,
其中所述主机延迟时间被配置为包括从所述数据传输延迟时间段的开始到所述主机的所述读取命令被接收所经过的时间。
11.根据权利要求10所述的存储器控制器,其中所述存储器控制部件将所述数据传输延迟时间段调节为检测到的所述主机延迟时间的最大值。
12.根据权利要求10所述的存储器控制器,其中所述数据传输延迟时间段被用于直接存储器访问设置命令。
13.根据权利要求10所述的存储器控制器,其中所述存储器控制部件在第一状态下的操作期间检测所述主机的每个主机延迟时间;所述存储器控制部件在第二状态下的操作期间调节所述数据传输延迟时间段;以及当处于所述第二状态的所述存储器控制部件在每个调节后的数据传输延迟时间段期间没有从所述主机接收到读取命令时,所述存储器控制部件从所述第二状态切换到所述第一状态以重新检测所述主机的所述主机延迟时间。
14.根据权利要求13所述的存储器控制器,其中当处于所述第一状态的所述存储器控制部件在所述数据传输延迟时间段期间没有连续地从所述主机接收读取命令时,所述存储器控制部件从所述第二状态切换到第三状态,其中在处于所述第三状态的所述存储器控制部件将数据传输到所述主机之后没有数据传输延迟时间段。
15.根据权利要求14所述的存储器控制器,其中当处于所述第三状态的所述存储器控制部件多次接收到来自所述主机的读取命令时,所述存储器控制部件从所述第三状态切换到所述第一状态以检测所述主机延迟时间。
16.根据权利要求10所述的存储器控制器,其中所述存储装置使用基于串行高级技术附件(SATA)的协议与所述主机进行通信。
17.一种存储装置,包括根据权利要求10所述的存储器控制器,并且进一步包括:
存储器,被配置为存储数据;
其中所述存储器控制器耦合至所述存储器,并且被配置为通过与所述主机的通信来访问所述存储装置的所述存储器。
18.根据权利要求17所述的存储装置,进一步包括:存储器接口,耦合到所述存储器并且被配置为访问所述存储器,
其中所述存储器接口设置在所述存储器控制器内。
19.一种存储装置的控制器的操作方法,所述存储装置包括与存储器装置耦合的所述控制器,接收主机的命令,并且根据所述命令来访问所述存储器装置,所述操作方法包括:
响应于来自所述主机的一个或多个访问请求而向所述主机提供响应,同时在每个所述响应的传输之后针对来自所述主机的后续访问请求而等待间歇时间的间隔;以及
基于所述后续访问请求的一个或多个主机延迟来调节所述间歇时间,
其中所述控制器和所述主机以半双工的方式提供所述响应和所述访问请求,以及
其中每个所述主机延迟是从对应的间歇时间的开始到对应的访问请求的接收的时间。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108101788A TWI784120B (zh) | 2019-01-17 | 2019-01-17 | 用於儲存裝置之記憶體控制器、儲存裝置、儲存裝置之控制方法以及記錄媒體 |
US16/658,373 US11036437B2 (en) | 2019-01-17 | 2019-10-21 | Memory controller for storage device, storage device, control method of storage device, and recording medium |
US16/658,373 | 2019-10-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112764672A CN112764672A (zh) | 2021-05-07 |
CN112764672B true CN112764672B (zh) | 2024-05-14 |
Family
ID=71608958
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911112791.6A Active CN112764672B (zh) | 2019-01-17 | 2019-11-14 | 存储器控制器、存储装置及其控制方法以及记录介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11036437B2 (zh) |
CN (1) | CN112764672B (zh) |
TW (1) | TWI784120B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102655360B1 (ko) * | 2018-12-13 | 2024-04-05 | 에스케이하이닉스 주식회사 | 컨트롤러, 데이터 저장 장치 및 그것의 동작 방법 |
US11386203B2 (en) * | 2020-06-15 | 2022-07-12 | Western Digital Technologies, Inc. | Detection of compromised storage device firmware |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6845344B1 (en) * | 2000-08-18 | 2005-01-18 | Emc Corporation | Graphical user input interface for testing performance of a mass storage system |
TW200622884A (en) * | 2004-12-30 | 2006-07-01 | Hynix Semiconductor Inc | On-chip data transmission control apparatus and method |
KR20130127274A (ko) * | 2012-05-14 | 2013-11-22 | 삼성전자주식회사 | 메모리 오퍼레이션 타이밍 제어 방법 및 이를 이용한 메모리 시스템 |
CN104052798A (zh) * | 2013-03-15 | 2014-09-17 | 株式会社理光 | 分布式控制系统和分布式控制方法 |
CN105701029A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 一种异构存储优化方法及装置 |
CN108932110A (zh) * | 2017-05-26 | 2018-12-04 | 希捷科技有限公司 | 用于管理存储器中数据的方法和装置 |
CN109522248A (zh) * | 2017-09-19 | 2019-03-26 | 三星电子株式会社 | 存储控制器的操作方法及储存设备的操作方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6334219B1 (en) * | 1994-09-26 | 2001-12-25 | Adc Telecommunications Inc. | Channel selection for a hybrid fiber coax network |
US7848287B2 (en) * | 2006-05-16 | 2010-12-07 | Telefonaktiebolaget Lm Ericsson | Bi-directional RLC non-persistent mode for low delay services |
JP2009237678A (ja) * | 2008-03-26 | 2009-10-15 | Fujitsu Microelectronics Ltd | メモリコントローラデバイス、メモリコントローラデバイスの制御方法およびデータ受信デバイス |
KR20140006205A (ko) * | 2012-06-27 | 2014-01-16 | 삼성전자주식회사 | 씨리얼 ata 프로토콜을 이용하는 반도체 장치 및 이를 포함하는 시스템 |
US9541987B2 (en) * | 2013-06-28 | 2017-01-10 | Intel Corporation | Generic host-based controller latency method and appartus |
US20170060460A1 (en) | 2015-08-31 | 2017-03-02 | Megachips Corporation | Memory controller |
US10339050B2 (en) * | 2016-09-23 | 2019-07-02 | Arm Limited | Apparatus including a memory controller for controlling direct data transfer between first and second memory modules using direct transfer commands |
US10452278B2 (en) * | 2017-03-24 | 2019-10-22 | Western Digital Technologies, Inc. | System and method for adaptive early completion posting using controller memory buffer |
JP2019049949A (ja) * | 2017-09-12 | 2019-03-28 | 東芝メモリ株式会社 | ストレージデバイス |
US11354064B2 (en) * | 2018-12-26 | 2022-06-07 | Micron Technology, Inc. | Detection of illegal commands |
US11209985B2 (en) * | 2019-04-23 | 2021-12-28 | Macronix International Co., Ltd. | Input/output delay optimization method, electronic system and memory device using the same |
US11188264B2 (en) * | 2020-02-03 | 2021-11-30 | Intel Corporation | Configurable write command delay in nonvolatile memory |
-
2019
- 2019-01-17 TW TW108101788A patent/TWI784120B/zh active
- 2019-10-21 US US16/658,373 patent/US11036437B2/en active Active
- 2019-11-14 CN CN201911112791.6A patent/CN112764672B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6845344B1 (en) * | 2000-08-18 | 2005-01-18 | Emc Corporation | Graphical user input interface for testing performance of a mass storage system |
TW200622884A (en) * | 2004-12-30 | 2006-07-01 | Hynix Semiconductor Inc | On-chip data transmission control apparatus and method |
KR20130127274A (ko) * | 2012-05-14 | 2013-11-22 | 삼성전자주식회사 | 메모리 오퍼레이션 타이밍 제어 방법 및 이를 이용한 메모리 시스템 |
CN104052798A (zh) * | 2013-03-15 | 2014-09-17 | 株式会社理光 | 分布式控制系统和分布式控制方法 |
CN105701029A (zh) * | 2014-11-25 | 2016-06-22 | 华为技术有限公司 | 一种异构存储优化方法及装置 |
CN108932110A (zh) * | 2017-05-26 | 2018-12-04 | 希捷科技有限公司 | 用于管理存储器中数据的方法和装置 |
CN109522248A (zh) * | 2017-09-19 | 2019-03-26 | 三星电子株式会社 | 存储控制器的操作方法及储存设备的操作方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112764672A (zh) | 2021-05-07 |
US11036437B2 (en) | 2021-06-15 |
TW202028958A (zh) | 2020-08-01 |
TWI784120B (zh) | 2022-11-21 |
US20200233611A1 (en) | 2020-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8893146B2 (en) | Method and system of an I/O stack for controlling flows of workload specific I/O requests | |
US20040017869A1 (en) | Method for transmitting data over a data bus with minimized digital inter-symbol interference | |
CN112764672B (zh) | 存储器控制器、存储装置及其控制方法以及记录介质 | |
US10908839B2 (en) | Storage device throttling amount of communicated data depending on suspension frequency of operation | |
CN101872288A (zh) | 固态硬盘驱动器以及操作频率控制方法 | |
KR20190088734A (ko) | 메모리 인터페이스와, 이를 포함하는 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 | |
US20190235791A1 (en) | Memory system and operating method thereof | |
US10671141B2 (en) | Storage device and method of controlling link state thereof | |
KR102381233B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20220137848A1 (en) | Storage device and operating method of storage device | |
US20190369919A1 (en) | Task management method and host for electronic storage device | |
KR20200054534A (ko) | 메모리 시스템 및 그것의 동작 방법 | |
US11150809B2 (en) | Memory controller and storage device including the same | |
US20230402121A1 (en) | Method for optimizing flash memory chip and related apparatus | |
CN111831214B (zh) | 输入输出延迟最佳化的方法、应用其的系统及存储器装置 | |
US20170177219A1 (en) | Method of operating storage device using serial interface and method of operating data processing system including the same | |
CN109840224B (zh) | 存储器系统及其操作方法 | |
EP3092570B1 (en) | Method for processing data in storage device and storage device | |
CN113495682A (zh) | 用于对装置管理配置请求进行列队的系统和方法 | |
CN108804354B (zh) | 存储装置、存取系统及存取方法 | |
US20240119021A1 (en) | Storage device, information processing system, and control method | |
US12050776B2 (en) | Apparatus with response completion pacing | |
US11636055B2 (en) | Method and apparatus for performing access management of memory device in predetermined communications architecture with aid of flexible delay time control | |
KR20140006205A (ko) | 씨리얼 ata 프로토콜을 이용하는 반도체 장치 및 이를 포함하는 시스템 | |
KR102727600B1 (ko) | 데이터 저장 장치, 데이터 처리 시스템 및 이를 위한 가속 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |