CN114550773A - 存储器控制器、存储系统和数据处理方法 - Google Patents

存储器控制器、存储系统和数据处理方法 Download PDF

Info

Publication number
CN114550773A
CN114550773A CN202111294683.2A CN202111294683A CN114550773A CN 114550773 A CN114550773 A CN 114550773A CN 202111294683 A CN202111294683 A CN 202111294683A CN 114550773 A CN114550773 A CN 114550773A
Authority
CN
China
Prior art keywords
error correction
data
memory
error
host processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111294683.2A
Other languages
English (en)
Inventor
崔赫埈
南喜铉
李正浩
田仑澔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN114550773A publication Critical patent/CN114550773A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

提供了存储器控制器、存储系统和数据处理方法。所述存储器控制器被配置为控制由经由总线连接到主机处理器的装置访问的存储器,并且包括:第一接口电路,被配置为与主机处理器进行通信;第二接口电路,被配置为与存储器进行通信;错误检测电路,被配置为:响应于从第一接口电路接收的第一读取请求来检测存在于从第二接口电路读取的数据中的错误;可变纠错电路,被配置为:基于包括在纠错选项中的参考延迟和参考纠错等级中的至少一个来纠正错误;以及固定纠错电路,被配置为:与可变纠错电路的操作并行地纠正错误。

Description

存储器控制器、存储系统和数据处理方法
本申请要求于2020年11月18日在韩国知识产权局提交的第10-2020-0154848号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
发明构思总体上涉及存储器装置,更具体地,涉及执行选择性和并行纠错的存储器控制器、包括存储器控制器的系统和存储器装置的操作方法。
背景技术
执行数据处理的系统(诸如,计算系统)可包括中央处理器(CPU)、存储器装置、输入/输出装置以及在构成系统的装置之间发送信息的根复合体(root complex)。
存储器装置可包括存储级存储器(storage class memory,SCM)。SCM具有大容量和非易失性的优点,但与动态随机存取存储器(DRAM)相比具有更长的延迟性能。因此,如果SCM在数据读取操作中执行纠错或者如果延迟由于垃圾收集等而增加,则服务质量(QoS)可能劣化。
发明内容
本公开的实施例提供一种根据纠错选项设置执行选择性和并行纠错以提高服务质量的存储器控制器、包括存储器控制器的系统和存储器装置的操作方法。
根据发明构思的实施例,提供了一种存储器控制器,所述存储器控制器包括:第一接口电路,被配置为与主机处理器进行通信;第二接口电路,被配置为与存储器进行通信;错误检测电路,被配置为:响应于从第一接口电路接收的第一读取请求来检测存在于从第二接口电路读取的数据中的错误;可变纠错电路,被配置为:基于包括在第一纠错选项中的参考延迟和参考纠错等级中的至少一个来纠正检测到的错误;以及固定纠错电路,被配置为:与可变纠错电路的操作并行地纠正检测到的错误。
根据发明构思的实施例,提供了一种方法,所述方法包括:从主机处理器接收第一读取请求;将第一读取请求发送到存储器,并且从存储器读取与第一读取请求对应的数据;检测读取的数据的错误;基于包括在第一纠错选项中的参考延迟或参考纠错等级中的至少一个来纠正包括在读取的数据中的错误;以及将第一纠正数据提供给主机处理器。
根据发明构思的实施例,提供了一种系统,所述系统包括:主机处理器,包括被配置为执行指令的至少一个核;存储器控制器,经由总线连接到主机处理器;以及存储器,被配置为通过存储器控制器进行访问,其中,存储器控制器可从存储器读取与主机处理器的第一读取请求对应的数据,并且并行地执行第一纠错操作和第二纠错操作,第一纠错操作基于包括在第一纠错选项中的参考延迟或参考纠错等级中的至少一个,第二纠错操作基于包括在数据中的错误的最大纠错等级。
附图说明
从下面的结合附图的详细描述,将更清楚地理解发明构思的实施例,其中:
图1是示出根据发明构思的实施例的系统的框图;
图2A和图2B是示出根据发明构思的实施例的系统的框图;
图3是示出根据发明构思的实施例的设置纠错选项的方法的流程图;
图4是示出根据发明构思的实施例的消息的数据结构图;
图5是示出根据发明构思的实施例的系统的框图;
图6是示出根据发明构思的实施例的读取操作的流程图;
图7是示出根据发明构思的实施例的选择性纠错操作的流程图;
图8是示出根据发明构思的实施例的并行纠错操作的流程图;
图9是示出根据发明构思的实施例的响应消息的数据结构图;
图10是示出根据本发明构思的另一实施例的系统的框图;
图11A和图11B是示出根据发明构思的实施例的系统的示例的框图;以及
图12是示出根据发明构思的实施例的包括系统的数据中心的框图。
具体实施方式
在下文中,将参照附图描述发明构思的各种实施例。
图1示出根据发明构思的实施例的系统100。
系统100可包括任何计算系统或计算系统的元件。系统100包括彼此通信的装置110和主机处理器120。例如,系统100可被包括在固定的计算系统(诸如,台式计算机、服务器、自助服务机等)中,或者可被包括在便携式计算系统(诸如,膝上型计算机、移动电话、可穿戴装置等)中。另外,在一些实施例中,系统100可被包括在其中装置110和主机处理器120被实现在一个芯片或封装件中的片上系统(SoC)或系统级封装(system-in-package,SiP)中。
如图1中所示,系统100可包括装置110、主机处理器120、装置附接存储器(device-attached memory)130和主机存储器140。在一些实施例中,可从系统100省略装置附接存储器130。
参照图1,装置110和主机处理器120可经由链路150彼此通信,并且可通过链路150在装置110与主机处理器120之间执行消息的发送或接收。尽管将参照基于支持计算快速链路(compute express link,CXL,)协议(诸如,在CXL规范2.0下)的CXL规范的链路150来描述发明构思的实施例,但是在替代实施例中,装置110和主机处理器120可基于一致性互连技术(诸如,但不限于XBus协议、NVLink协议、无限网络(Infinity Fabric)协议、用于加速器的高速缓存一致性互连(CCIX)协议和/或一致性加速器处理器接口(CAPI))彼此通信。
在一些实施例中,链路150可支持多个协议,并且消息可经由多个协议被传送。例如,链路150可支持CXL协议,CXL协议包括非一致性协议(例如,CXL.io)、一致性协议(例如,CXL.cache)以及存储器访问或存储器协议(例如,CXL.mem)。在一些实施例中,链路150可支持协议(诸如,但不限于外围组件互连(PCI)、PCI快速(PCIe)、通用串行总线(USB)或串行高级技术附件(SATA))。在此,由链路150支持的协议也可被称为互连协议。
装置110可表示用于将有用功能提供给主机处理器120的任何装置,并且在一些实施例中,可对应于符合CXL规范的加速器。例如,在主机处理器120上运行的软件可将其计算和/或输入/输出(I/O)操作中的至少一些卸载到装置110。在一些实施例中,装置110可包括可编程元件(诸如,图形处理器(GPU)或神经处理器(NPU))、固定功能提供元件(诸如,知识产权(IP)核)和可重新配置元件(诸如,现场可编程门阵列(FPGA))中的至少一个。如图1中所示,装置110可包括物理层111、多协议复用器112、接口电路113和加速器电路114,并且可与装置附接存储器130进行通信。
加速器电路114可执行装置110提供给主机处理器120的有用功能,并且也可被称为加速器逻辑。如果装置附接存储器130被包括在如图1中所示的系统100中,则加速器电路114可基于独立于链路150的协议(诸如,装置特定协议)与装置附接存储器130进行通信。另外,如图1中所示,加速器电路114可通过使用多个协议经由接口电路113与主机处理器120进行通信。
接口电路113可基于用于加速器电路114与主机处理器120之间的通信的消息来确定多个协议中的一个。接口电路113可连接到包括在多协议复用器112中的至少一个协议队列,并且可经由至少一个协议队列向主机处理器120发送消息和从主机处理器120接收消息。在一些实施例中,接口电路113和多协议复用器112可被集成到一个元件中。在一些实施例中,多协议复用器112可包括分别与由链路150支持的多个协议对应的多个协议队列。另外,在一些实施例中,多协议复用器112可在通过不同协议的通信之间执行仲裁(arbitration),并且可将选择的通信提供给物理层111。在一些实施例中,物理层111可经由单个互连、总线、迹线等连接到主机处理器120的物理层121。
主机处理器120可以是系统100的主处理器(诸如,中央处理器(CPU)),并且在一些实施例中,主机处理器120可对应于符合CXL规范的主机处理器(或主机)。如图1中所示,主机处理器120可连接到主机存储器140,并且可包括物理层121、多协议复用器122、接口电路123、一致性/高速缓存电路124、总线电路125、至少一个核126和I/O装置127。
至少一个核126可执行指令,并且可连接到一致性/高速缓存电路124。一致性/高速缓存电路124可包括高速缓存层级(hierarchy),并且还可被称为一致性/高速缓存逻辑。如图1中所示,一致性/高速缓存电路124可与至少一个核126和接口电路123进行通信。例如,一致性/高速缓存电路124可允许经由包括一致性协议和存储器访问协议的两个或更多个协议的通信。在一些实施例中,一致性/高速缓存电路124可包括直接存储器访问(DMA)电路。I/O装置127可用于与总线电路125进行通信。例如,总线电路125可以是PCIe逻辑,并且I/O装置127可以是PCIe I/O装置。
接口电路123可允许装置110与主机处理器120的元件(例如,一致性/高速缓存电路124和总线电路125)之间的通信。在一些实施例中,接口电路123可根据多个协议(例如,非一致性协议、一致性协议和存储器协议)允许装置110与主机处理器120的元件之间的消息和/或数据的通信。例如,接口电路123可基于用于装置110与主机处理器120的元件之间的通信的消息和/或数据,来确定多个协议中的一个。
多协议复用器122可包括至少一个协议队列。接口电路123可连接到至少一个协议队列,并且可经由至少一个协议队列向装置110发送消息和从装置110接收消息。在一些实施例中,接口电路123和多协议复用器122可被集成到一个元件中。在一些实施例中,多协议复用器122可包括分别与由链路150支持的多个协议对应的多个协议队列。另外,在一些实施例中,多协议复用器122可在通过不同协议的通信之间执行仲裁,并且可将选择的通信提供给物理层121。
图2A和图2B示出根据发明构思的实施例的系统200a和系统200b。
如图2A中所示,系统200a可包括装置210a、主机处理器220a、装置存储器230a和主机存储器240a。在一些实施例中,装置存储器230a可对应于图1的装置附接存储器130。
如同参照图1描述的那样,装置210a和主机处理器220a可基于多个协议彼此通信。多个协议可包括存储器协议MEM、一致性协议COH和非一致性协议IO。在一些实施例中,存储器协议MEM、一致性协议COH和非一致性协议IO可分别对应于CXL规范2.0协议CXL.mem、CXL.cache和CXL.io。存储器协议MEM可定义主设备与从设备之间的事务。例如,存储器协议MEM可定义从主设备到从设备的事务以及从从设备到主设备的事务。一致性协议COH可定义装置210a与主机处理器220a之间的交互。例如,一致性协议COH的接口可包括包含请求、响应和数据的三个通道。非一致性协议IO可将非一致性负载/存储接口提供给输入/输出装置210a。
在一些实施例中,装置210a可对应于CXL规范中定义的类型3CXL装置。在这种情况下,装置210a和主机处理器220a可使用存储器协议MEM和非一致性协议IO来彼此通信。
装置210a可与装置存储器230a进行通信,并且可包括用于访问装置存储器230a的存储器控制器211a。在一些实施例中,与图2A中示出的实施例不同,存储器控制器211a可在装置210a外部,并且可与装置存储器230a集成。另外,主机处理器220a可与主机存储器240a进行通信,并且可包括用于访问主机存储器240a的存储器控制器221a。在一些实施例中,与图2A中示出的实施例不同,存储器控制器221a可在主机处理器220a外部,并且可与主机存储器240a集成。参照图2B,系统200b可包括装置210b、主机处理器220b、装置存储器230b和主机存储器240b。图2B的系统200b可被认为是图2A的系统200a的实施例。根据发明构思的实施例,装置210b可将装置信息提供给主机处理器220b。主机处理器220b可将纠错选项提供给装置210b,以基于装置信息来确定纠错等级(例如,装置210b的纠错等级)。
纠错选项可由装置210b自身设置。在这种情况下,装置210b可利用装置信息和/或装置存储器230b的信息。装置210b可根据来自主机处理器220b的读取请求从装置存储器230b读取数据,并且根据关于读取数据设置的纠错选项执行纠错操作。装置210b可将指示错误信息的错误标志与纠正后的数据一起提供给主机处理器220b。如果以上描述的装置210b被实现为类型3CXL装置,则装置210b可通过存储器协议MEM处理主机处理器220b的请求,并且通过非一致性协议IO处理装置发现或错误报告和管理。
根据本实施例,装置存储器230b可被实现为各种类型的存储器,作为示例,被实现为存储级存储器(SCM)。
SCM同时具有非易失性存储器和易失性存储器的特性,并且可以字节为单位进行访问,因此SCM的使用范围正扩大。例如,SCM可包括相变RAM(PCM)、铁电RAM(FeRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)以及STT-MRAM。
作为用于评估服务质量(QoS)的一个因素,延迟(例如,尾延迟(tail latency))可被使用。具体地,SCM具有大容量和非易失性的优点,但是具有比动态随机存取存储器(DRAM)更低的延迟性能。因此,纠错操作可在数据读取操作中被执行,或者延迟可由于垃圾收集而增加。另外,因为SCM具有非确定性延迟特性,所以QoS可能劣化,因此有必要减少尾延迟。
根据比较示例,可使用各种方法来增加QoS。作为示例,主机处理器220b可监测装置210b的负载等级并且根据负载等级控制发送到装置210b的请求的处理。
例如,装置210b可基于排队的请求、内部资源使用和使用的带宽来确定负载等级。此后,装置210b可将指示负载等级的字段项DevLoad添加到响应消息(例如,图4的410),并且将响应消息发送到主机处理器220b。例如,装置210b可将负载等级分类为四个步,并且将负载等级发送到主机处理器220b。如果装置210b包括多个存储器,则装置210b可分类并发送关于每个存储器的负载等级。主机处理器220b可基于包括从装置210b提供的负载等级的信息来对装置210b执行节流(throttling)。
除了负载等级之外,尾延迟可以是确定QoS的因素。因此,根据本实施例的系统200b可执行一系列操作以防止尾延迟超过参考值。主机处理器220b可停止,直到与提供给装置210b的请求对应的响应被接收到。这可进一步增加尾延迟。
因此,为了减少尾延迟并增加QoS,根据本实施例的装置210b可首先在不超过特定延迟的限制内提供对主机处理器220b的请求的响应。例如,作为对读取请求的响应,发送纠正后的数据所花费的时间可被预测为超过特定延迟。在这种情况下,装置210b可牺牲纠错的准确度,并且以快速延迟将包括错误的数据提供给主机处理器220b。
根据本实施例的装置210b的操作可被称为选择性纠错操作。选择性纠错操作可表示:在纠错处理不超过参考延迟的同时以装置210b的最大纠错等级(或无错误状态)执行纠错操作,并且在纠错处理被预测为超过参考延迟的同时以低纠错等级执行纠错操作。
主机处理器220b可参照从装置210b发送的消息(例如,图4中的410),以确定装置210b可达成的纠错等级的最大值(即,最大纠错等级)以及装置210b可达成的延迟的最小值和最大值。
装置210b的最大纠错等级和/或延迟的最小值和最大值可基于装置210b的特性(诸如,装置210b的性能、负载等级和存储器的类型)而被确定。纠错等级表示装置210b所针对的纠错的准确度,并且该值越高,检测到的装置210b可被纠正的检测的错误越多。
主机处理器220b可设置包括装置210b的参考纠错等级和参考延迟的纠错选项。例如,主机处理器220b可设置纠错选项,使得装置210b执行具有特定准确度或较高准确度的纠错,并且纠错操作不超过参考延迟。纠错选项设置消息可与图4的420相同。
此后,如果主机处理器220b将读取请求发送到装置210b,则装置210b可基于纠错选项执行纠错操作并且响应主机处理器220b。装置210b可在参考延迟内将响应消息和纠正后的数据一起发送到主机处理器220b。响应消息可包括指示纠正后的数据中是否存在错误的错误标志。主机处理器220b可基于错误标志来确定接收到的纠正后的数据的准确度。主机处理器220b可在必要时再次向装置210b请求错误被完全纠正的数据,装置210b可执行纠错操作直到请求被接收到,并且将错误被完全纠正的数据提供给主机处理器220b。
如上所述,装置210b基于参考延迟和最大纠错等级来执行选择性纠错操作,因此,主机处理器220b的操作停止期间的时间可被减少,从而提高QoS。
图3示出根据发明构思的实施例的设置纠错选项的方法。
主机310可包括主机处理器(例如,图1中的120、图2A中的220a或图2B中的220b)和主机存储器(例如,图1中的140、图2A中的240a或图2B中的240b)。此外,存储器控制器320可对应于图2A的存储器控制器211a或图2B的存储器控制器211b。
共同参照图2B和图3,主机310可向存储器控制器320请求装置信息(S110)。
存储器控制器320可将关于装置210b的信息发送到主机310(S120)。可通过发送对操作S110的响应消息来执行操作S120。例如,操作S120可通过存储器协议CXL.mem的从设备到主设备(S2M)事务来执行,作为示例,响应消息可以是图4的410。
主机310可基于包括在响应消息中的信息来设置装置210b的纠错选项(S130)。可通过存储器协议CXL.mem的M2S事务来设置纠错选项。主机310可基于在操作S120中接收的装置信息来设置作为装置210b的纠错操作的参考的纠错选项。例如,装置信息可包括由装置可实现的延迟值和由装置可实现的纠错等级值中的至少一个。如图4的420中所示,纠错选项设置消息可包括基于装置210b是否执行纠错操作的纠错等级和/或参考延迟。作为另一示例,存储器控制器320可考虑从主机310接收的纠错选项和装置信息或附接到装置的装置存储器230a的信息来设置纠错选项。
可通过将任何请求从主机310发送到存储器控制器320来执行以上描述的操作S110至操作S130。作为另一示例,可在系统的启动阶段期间执行操作S110至操作S130。
图4示出根据发明构思的实施例的消息。
共同参照图2A、图2B、图3和图4,响应消息410可以是在图3的操作S120中发送的消息,并且纠错选项设置消息420可以是在图3的操作S130中发送的消息。
响应消息410可包括第一字段F1至第四字段F4,并且还可包括附加字段。包括在响应消息410中的字段F1至F4中的每个可包括至少一位,并且与至少一位的值对应的信息可由协议定义。
例如,第一字段F1是有效信号,并且可包括指示响应消息410是有效消息的1位。第二字段F2是操作码,并且可包括定义与响应消息410对应的操作的多个位。例如,第二字段F2的操作码可指示用于更新元数据的无效。第三字段F3是逻辑装置(LD)的标识符(LD-ID),并且如果装置210b被实现为多逻辑装置(MLD),则第三字段F3可被包括。第四字段F4是负载等级,并且可包括指示装置210b在当前时间的负载等级的多个位。
响应消息410可包括包含可由装置210b实现的延迟的最小值的装置信息,并且还可包括执行选择性纠错操作所需的各种类型的信息。
纠错选项设置消息420可包括第五字段F5至第八字段F8,并且还可包括附加字段。包括在纠错选项设置消息420中的字段F5至F8中的每个可包括至少一个位,并且与至少一个位的值对应的信息可由协议定义。
纠错选项设置消息420的第五字段F5和第六字段F6可分别与响应消息410的第一字段F1和第二字段F2类似,因此五字段F5和第六字段F6的冗余描述可被省略。
第七字段F7是参考纠错等级(例如,ECC等级),并且可指示当装置210b执行纠错操作时的目标准确度。装置210b可基于包括在第七字段F7中的参考纠错等级执行纠错操作。
第八字段F8是延迟信息,并且可包括用于确定装置210b是否执行选择性纠错操作的参考延迟。参考延迟可以是等于或大于由装置210b可实现的最小延迟的值。根据纠错选项设置方法,参考延迟可以是小于或等于由装置210b可实现的最大延迟的值。
例如,装置210b可在不超过参考延迟的限制内执行目的在等于或高于纠错等级的准确度的纠错操作。
如果装置210b被实现为MLD,则主机处理器220b可关于逻辑装置210b中的每个设置不同的纠错选项。在这种情况下,纠错选项设置消息420还可包括逻辑装置标识符字段ID-ID。
图5示出根据发明构思的实施例的系统500。
参照图5,存储器控制器520可包括第一接口电路521、第二接口电路522、纠错码(ECC)设置电路523、可变ECC电路524、固定ECC电路525、缓冲器526以及错误检测器(或错误检测电路)527。存储器控制器520可对应于以上描述的存储器控制器(例如,图2A中的211a和图2B中的211b以及图3中的320)中的一个。主机510可包括图1、图2A和/或图2B的主机处理器和主机存储器。
第一接口电路521可与主机510进行通信。在一个实施例中,第一接口电路521可通过加速器电路(例如,图1中的114)与主机510进行通信。第一接口电路521可从主机510接收纠错选项设置消息Msg_ECC,并且可接收读取或写入请求REQ。此外,第一接口电路521可将读取数据RD、第一纠正后的数据(或第一纠正数据)FD1和第二纠正后的数据(或第二纠正数据)FD2中的至少一个与对读取请求的响应一起发送到主机510。
第二接口电路522可与存储器530进行通信。存储器530可表示能够存储信息的任何存储介质。例如,存储器530可通过半导体工艺被制造,可包括易失性存储器(诸如,静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等),并且还可包括非易失性存储器(诸如,闪存、电阻式随机存取存储器(RRAM)等)。如上所述,存储器530可包括SCM。此外,存储器530可包括多个逻辑装置。第二接口电路522可将命令和地址提供给存储器530,并且可从存储器530接收读取数据RD。
ECC设置电路523可通过第一接口电路521从主机510接收纠错选项设置消息Msg_ECC,并且根据纠错选项设置消息Msg_ECC的每个字段值来控制错误检测器527和/或可变ECC电路524的操作。ECC设置电路523可提供作为用于执行选择性纠错操作的参考的纠错等级和/或参考延迟作为多个组件。
错误检测器527可检测从存储器530读取的读取数据RD中是否存在错误,并且确定是否纠错。错误检测器527可将具有错误的读取数据RD_E提供给可变ECC电路524和/或固定ECC电路525以用于纠错。如果确定读取数据RD是无错误的,则错误检测器527可将读取数据RD存储在缓冲器526中。
作为示例,错误检测器527可基于从ECC设置电路523提供的纠错等级和/或参考延迟来确定是否在参考延迟内以参考纠错等级的准确度执行读取数据RD的纠错。如果确定执行读取数据的纠错,则错误检测器527可将具有错误的读取数据RD_E发送到固定ECC电路525,并且如果确定不执行读取数据的纠错,则错误检测器527可将具有错误的读取数据RD_E发送到可变ECC电路524和固定ECC电路525中的每个。
另外,错误检测器527可在对来自主机510的读取请求的响应消息中包括错误标志。错误标志是指示错误是否被包括在读取数据中的字段,并且可具有0或1的值。
可变ECC电路524和固定ECC电路525可执行用于对从存储器530读取的具有错误的读取数据RD_E执行纠错的一系列操作。例如,可变ECC电路524和固定ECC电路525可通过ECC解码操作纠正包括在具有错误的读取数据RD_E中的错误位。
可变ECC电路524可基于从ECC设置电路523提供的参考纠错等级来执行具有错误的读取数据RD_E的纠错。可变ECC电路524可通过第一接口电路521将第一纠正后的数据FD1提供给主机510。
固定ECC电路525可不从ECC设置电路523接收参考纠错等级,并且可基于最大准确度执行具有错误的读取数据RD_E的纠错。例如,固定ECC电路525可在无错误状态下生成第二纠正后的数据FD2。固定ECC电路525可将第二纠正后的数据FD2存储在缓冲器526中。例如,通过可变ECC电路524生成第一纠正数据FD1所需的时间可短于通过固定ECC电路525生成第二纠正数据FD2所需的时间。
存储器控制器520可重复地从主机510接收对相同数据的读取请求。作为示例,存储器控制器520可基于包括在来自主机510的读取请求中的地址来确定是否存在对相同数据的冗余请求。根据时间次序首先接收的读取请求可被称为第一读取请求,并且之后接收的读取请求可被称为第二读取请求。
作为执行针对第一读取请求的操作的结果,可将读取数据存储在缓冲器526中。在这方面,存储器控制器520可获取存储在缓冲器526中的数据作为对第二读取请求的响应,并且将该数据发送到主机510。此时,可将处于无错误状态的第二纠正后的数据FD2发送到主机510。生成读取命令、将读取命令提供给存储器530以及接收从存储器530读取的数据的操作可被绕过,因此延迟可被改善。
图6示出根据发明构思的实施例的读取操作。
参照图6,根据本实施例的装置620可以是CXL规范中定义的类型3CXL装置。主机610可包括图1至图2的主机处理器和主机存储器。在这方面,主机610可将装置620视为解聚的存储器。根据以上描述的存储器协议MEM,主设备可对应于主机610,从设备可对应于装置620。另外,之后描述的每个操作可通过存储器协议CXL.mem的M2S事务或S2M事务来执行。
主机610可将读取请求发送到存储器控制器621(S210)。作为示例,主机610可在发送读取请求之前通过图3的操作来设置装置620的纠错选项。作为另一示例,主机610可将装置620的纠错选项设置消息与读取请求一起发送。作为另一示例,装置620的纠错选项可由装置620自身设置。设置纠错选项所需的信息可包括参照图3描述的装置信息,并且还可包括各种其它信息。
存储器控制器621可将读取请求发送到存储器622(S220),并且接收读取数据(S230)。
存储器控制器621可通过对读取数据执行错误检测操作来确定是否存在错误(S240)。
如果读取数据中存在错误,则存储器控制器621可根据设置的纠错选项执行读取数据的纠错操作(S250)。例如,存储器控制器621可确定是否可在参考延迟内以参考纠错等级对检测到的错误执行纠错操作。基于确定的结果,存储器控制器621可使可变ECC电路和/或固定ECC电路执行纠错操作。
此后,存储器控制器621可将纠正后的数据发送到主机610(S260)。纠正后的数据可处于无错误状态或包括根据参考纠错等级的错误的状态。作为示例,如果纠错选项通过向延迟分配最大权重而被设置,则存储器控制器621可在不纠错的情况下立即将读取数据发送到主机610。
在这方面,错误标志可用于指示数据是否包括错误。例如,作为对操作S210中的读取请求的响应,存储器控制器621可生成包括错误标志的响应消息(例如,图10中的700),并且将响应消息与数据一起发送到主机610。错误标志可指示将被发送的纠正后的数据是否包括错误,并且可具有0或1的值。
如果在操作S240中读取的数据中不存在错误,则存储器控制器621可将读取数据发送到主机610(S260)。在这种情况下,响应消息的错误标志可具有与如果存在错误的错误标志不同的值。
图7示出根据发明构思的实施例的选择性纠错操作。
图7可示出图6的操作S250和操作S260的实施例,但没有限制。在下文中,将描述在根据来自主机610的读取请求从存储器622读取数据之后的处理。
共同参照图6和图7,存储器控制器621可检测从存储器622读取的数据中的错误(S310)。这可对应于图6的操作S240。
存储器控制器621可确定检测到的错误在参考延迟内是否可纠正(S320)。存储器控制器621可附加地考虑纠错等级。例如,存储器控制器621可确定纠错在主机选择的参考延迟限制内以主机选择的参考纠错等级是否可行。
如果在操作S320中确定检测到的错误可纠正,则存储器控制器621可通过固定ECC电路纠正检测到的错误(S330)。固定ECC电路可在无错误状态下纠正读取数据,而不管设置的纠错等级如何。纠正后的数据可通过固定ECC电路被存储在缓冲器中。
存储器控制器621可将纠正后的数据发送到主机(S340)。存储器控制器621可发送响应消息和纠正后的数据,并且响应消息可包括指示纠正后的数据处于无错误状态的内容。
如果在操作S320中确定检测到的错误在参考延迟内以参考纠错等级不可纠正,则存储器控制器621可执行操作A并通过可变ECC电路并行地纠正检测到的错误(S350)。操作A可与装置620的各种其它任务并行地执行,并且参照图8给出操作A的描述。因为可变ECC电路基于参考纠错等级来纠错,所以错误可被包括在纠正后的数据中。
存储器控制器621可将包括纠正后的数据和错误标志的响应消息发送到主机(S360)。由可变ECC电路纠正的数据可不处于无错误状态。因此,响应消息的错误标志可指示1。纠正后的数据可在不通过缓冲器的情况下由可变ECC电路发送到主机610。
根据以上描述的实施例,主机610可在参考延迟内接收数据。另外,主机610可根据情况选择性地请求数据,从而高效地管理资源。
图8示出根据发明构思的实施例的并行纠错操作。
如上所述,如果存储器控制器621根据纠错选项确定错误在参考延迟内以参考纠错等级不可纠正,则存储器控制器621可通过可变ECC电路执行纠错操作。在这方面,存储器控制器621可与可变ECC电路的操作并行地将读取数据提供给固定ECC电路。因此,可变ECC电路和固定ECC电路可并行地执行纠错操作,使得纠正到参考纠错等级的第一纠正数据和纠正到无错误状态的第二纠正数据可被生成。
可变ECC电路的操作被限于设置的速率,因此第一纠正数据可以以比第二纠正数据更快的速率被生成。因此,可在由主机610设置的延迟内将第一纠正数据提供给主机610。在接收到第一纠正数据之后,主机610可再次请求处于无错误状态的数据。在这种情况下,存储器控制器621可绕过从存储器622读取数据并检测错误的处理(例如,图6中的S220至S240),并且立即将第二纠正数据发送到主机610。因此,装置620可改善关于读取操作的延迟并以高准确度将数据提供给主机610。
参照图6和图8,存储器控制器621可与图7的操作S350并行地通过固定ECC电路执行纠错操作,以将纠正后的数据存储在缓冲器中(S410)。也就是说,存储器控制器621可响应于读取请求将读取数据发送到主机610,并且单独地执行读取数据的纠错。因此,处于无错误状态的数据可被存储于缓冲器中。
此后,存储器控制器621可从主机610再次接收对相同数据的读取请求(S420)。在没有限制的情况下,对相同数据的读取请求可被执行为读取重试或延迟读取。存储器控制器621可基于包括在读取请求中的地址来确定是否存在对相同数据的重复请求。
存储器控制器621可确定高速缓存命中(cache hit)(S430)。例如,存储器控制器621可确认与包括在来自主机610的读取请求中的地址对应的数据是否被存储在缓冲器中,并且确定是否存在高速缓存命中。
存储器控制器621可将存储在缓冲器中的纠正后的数据发送到主机610(S440)。存储器控制器621可将对在操作S420中接收的读取请求的响应消息与纠正后的数据一起发送到主机610。在这方面,因为纠正后的数据处于无错误状态,所以无错误响应消息的错误标志可指示0。
图9示出根据发明构思的实施例的响应消息700。
共同参照图5和图9,可基于CXL协议的S2M数据响应(DRS)消息来生成响应消息700。响应消息700可包括多个字段,并且与以上参照图4给出的描述冗余的描述被省略。
根据本实施例的响应消息700可被生成为对来自主机510的读取请求的响应,并且可在第九字段F9中包括错误标志(保留)。错误标志可指示错误是否被包括在与响应消息700一起被发送到主机510的读取数据中。
例如,错误可由可变ECC电路524和/或固定ECC电路525根据选择性纠错操作来纠正。例如,如果错误由可变ECC电路524纠正,则在纠正后的数据中存在错误时,错误标志可被设置为1。作为另一示例,如果固定ECC电路525在无错误状态下纠正数据,则错误标志可被设置为0。
主机510可接收响应消息700,并且基于包括在响应消息700中的错误标志来对其自身执行纠错操作或者再次向存储器控制器520请求数据。
图10示出根据发明构思的另一实施例的系统800。参照图10描述发明构思的以上描述的实施例被应用于包括CXL规范中定义的类型3CXL装置的系统的情况,但不限于此,并且以上描述的实施例也可被应用于CXL规范中定义的类型1装置或类型2装置。
参照图10,系统800可包括根复合体(root complex)810、与根复合体810连接的CXL存储器扩展器820和存储器830。根复合体810可对应于主机处理器(例如,图1的120、图2A的220a、图2B的220b)。根复合体810可通过存储器控制器与主机存储器进行通信,存储器控制器可对应于图2B的存储器控制器221a,主机存储器可对应于图2B的主机存储器240a。根复合体810可包括归属代理和输入/输出桥接器。归属代理可基于存储器协议CXL.mem与CXL存储器扩展器820进行通信。基于CXL协议,归属代理可对应于主机侧的代理,代理被设置为解决系统800关于给定地址的整体一致性。输入/输出桥接器可基于非一致性协议CXL.io与CXL存储器扩展器820进行通信,并且包括输入/输出存储器管理单元IOMMU。CXL存储器扩展器820对应于装置(例如,图1的110、图2A的210a、图2B的210b),从而根据以上描述的实施例执行选择性和/或并行纠错操作。
CXL存储器扩展器820可包括存储器控制器821。存储器控制器821可执行以上参照图1至图9描述的存储器控制器(图2的211、图3的320、图5的520和图6的621)的操作。
存储器控制器821可被称为存储器接口电路,并且可基于存储器830的接口来访问存储器830。此外,根据发明构思的实施例,CXL存储器扩展器820可基于非一致性协议CXL.io或类似的PCIe通过输入/输出桥接器将数据输出到根复合体810。存储器830可表示用于存储数据的任何介质。作为示例,存储器830可包括半导体存储器装置(例如,非易失性存储器装置(诸如,闪存、电阻式随机存取存储器(RRAM)等)和/或易失性存储器装置(诸如,动态随机存取(DRAM)存储器、静态随机存取存储器(SRAM)等))。
存储器830可包括多个存储器区域M1至Mn,并且存储器区域M1至Mn中的每个可被实现为各种存储器单元。作为示例,如果存储器830包括多个易失性存储器芯片或非易失性存储器芯片,则存储器区域M1至Mn中的每个的单元可以是存储器芯片。可选地,存储器830可被实现为使得存储器区域M1至Mn中的每个的单元对应于存储器中定义的各种大小(诸如,半导体裸片、块、存储体和排)。
根据实施例,多个存储器区域M1至Mn可具有分层结构。例如,第一存储区域M1可以是较高级存储器,第n存储区域Mn可以是较低级存储器。较高级存储器可具有相对小的容量和较快的响应速度,较低级存储器可具有相对大的容量和较慢的响应速度。由于这种差异,每个存储器区域的可实现的最小延迟(或最大延迟)或最大纠错等级可以是不同的。
因此,主机可为存储器区域M1至Mn中的每个设置纠错选项。在这种情况下,主机可将多个纠错选项设置消息发送到存储器控制器821。每个纠错选项设置消息可包括参考延迟、参考纠错等级和用于标识存储器区域的标识符。因此,存储器控制器821可确认纠错选项设置消息的存储器区域标识符,并且为存储器区域M1至Mn中的每个设置纠错选项。
作为另一示例,可变ECC电路或固定ECC电路可根据存储将被读取的数据的存储区域来执行纠错操作。例如,较高重要性的数据可被存储在较高级的存储器中,并且准确度可被看重而不是延迟。因此,对于存储在较高级存储器中的数据,可变ECC电路的操作可被省略,并且纠错操作可由固定ECC电路执行。作为另一示例,低重要性的数据可被存储在较低级存储器中。存储在较低级存储器中的数据看重延迟,因此,固定ECC电路的操作可被省略。也就是说,响应于读取请求,可立即将读取数据发送到主机,而无需由可变ECC电路进行纠错或纠错操作。根据数据的重要性和存储数据的存储区域,选择性和并行纠错操作可以各种方式被执行,并且不限于以上描述的实施例。
存储器区域标识符还可被包括在存储器控制器821的响应消息中。读取请求消息可包括存储器区域标识符和将被读取的数据的地址。响应消息可包括关于包括读取数据的存储器区域的存储器区域标识符。
图11A和图11B示出根据发明构思的实施例的系统900a和系统900b的示例。
具体地,图11A和图11B的框图分别示出包括多个CPU的系统900a和系统900b。在下面的关于图11A和图11B的描述中,重复的描述可被省略。
参照图11A,系统900a可包括第一CPU 11a和第二CPU 21a,并且可包括分别连接到第一CPU 11a和第二CPU 21a的第一双倍数据速率(DDR)存储器12a和第二双倍数据速率(DDR)存储器22a。第一CPU 11a和第二CPU 21a可经由基于处理器互连技术的互连系统30a彼此连接。如图11A中所示,互连系统30a可提供至少一个CPU到CPU一致性链路。
系统900a可包括与第一CPU 11a通信的第一I/O装置13a和第一加速器14a,并且可包括连接到第一加速器14a的第一装置存储器15a。第一CPU 11a可经由总线16a与第一I/O装置13a进行通信,并且可经由总线17a与第一加速器14a进行通信。另外,系统900a可包括与第二CPU 21a通信的第二I/O装置23a和第二加速器24a,并且可包括连接到第二加速器24a的第二装置存储器25a。第二CPU 21a可经由总线26a与第二I/O装置23a进行通信,并且可经由总线27a与第二加速器24a进行通信。
基于协议的通信可通过总线16a、总线17a、总线26a和总线27a而被执行,并且协议可支持以上参照附图描述的选择性和并行纠错操作。因此,关于存储器(例如,第一装置存储器15a、第二装置存储器25a、第一DDR存储器12a和/或第二DDR存储器22a)的纠错操作所需的延迟可被减少,并且系统900a的性能可被提高。
参照图11B,类似于图11A的系统900a,系统900b可包括第一CPU 11b和第二CPU21b、第一DDR存储器12b和第二DDR存储器22b、第一I/O装置13b和第二I/O装置23b、以及第一加速器14b和第二加速器24b,并且还可包括远程远存储器(remote far memory)40。第一CPU 11b和第二CPU 21b可经由互连系统30b彼此通信。第一CPU 11b可分别经由总线16b和总线17b连接到第一I/O装置13b和第一加速器14b,第二CPU 21b可分别经由总线26b和总线27b连接到第二I/O装置23b和第二加速器24b。
第一CPU 11b和第二CPU 21b可分别经由第一总线18和第二总线28连接到远程远存储器40。远程远存储器40可用于系统900b中的存储器的扩展,并且第一总线18和第二总线28可用作存储器扩展端口。与第一总线18和第二总线28以及总线16a、总线17a、总线26a和总线27a对应的协议也可支持以上参照附图描述的选择性和并行纠错操作。因此,关于远程远存储器40的纠错所需的延迟可被减少,并且系统900b的性能可被提高。
图12示出应用了根据发明构思的实施例的系统的数据中心1。
在一些实施例中,以上参照附图描述的系统可作为应用服务器和/或存储服务器被包括在数据中心1中。另外,与应用于发明构思的实施例的存储器控制器的选择性和并行纠错操作有关的实施例可被应用于应用服务器和存储服务器中的每个。
参照图12,数据中心1可收集各种数据并提供服务,并且可被称为数据存储中心。数据中心1可以是用于操作搜索引擎和数据库的系统,并且可以是在公司(诸如,银行)中或在政府机构中使用的计算系统。如图12中所示,数据中心1可包括应用服务器50_1至50_n和存储服务器60_1至60_m(m和n是大于1的整数)。应用服务器50_1至50_n的数量和存储服务器60_1至60_m的数量可根据实施例被不同地选择,并且应用服务器50_1至50_n的数量可与存储服务器60_1至60_m的数量不同。
应用服务器50_1至50_n可包括处理器51_1至51_n、存储器52_1至52_n、交换机53_1至53_n、网络接口控制器(NIC)54_1至54_n以及存储装置55_1至55_n中的至少一个。处理器51_1至51_n可控制应用服务器50_1至50_n的所有操作,并且可访问存储器52_1至52_n以执行加载到存储器52_1至52_n中的指令和/或数据。存储器52_1至52_n可包括但不限于:双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插存储器模块(DIMM)、傲腾DIMM(Optane DIMM)或非易失性DIMM(NVDIMM)。
根据实施例,被包括在应用服务器50_1至50_n中的处理器和存储器的各自数量可被不同地选择。在一些实施例中,处理器51_1至51_n和存储器52_1至52_n可提供处理器-存储器对。在一些实施例中,处理器51_1至51_n的数量可与存储器52_1至52_n的数量不同。处理器51_1至51_n可包括单核处理器或多核处理器。在一些实施例中,如图12中的虚线所示,可从应用服务器50_1至50_n省略存储装置55_1至55_n。包括在应用服务器50_1至50_n中的存储装置55_1至55_n的数量可根据实施例被不同地选择。处理器51_1至51_n、存储器52_1至52_n、交换机53_1至53_n、NIC 54_1至54_n和/或存储装置55_1至55_n通过以上参照附图描述的链路彼此通信。
存储服务器60_1至60_m可包括处理器61_1至61_m、存储器62_1至62_m、交换机63_1至63_m、NIC 64_1至64_n以及存储装置65_1至65_m中的至少一个。处理器61_1至61_m和存储器62_1至62_m可与以上描述的应用服务器50_1至50_n的处理器51_1至51_n和存储器52_1至52_n类似地进行操作。
应用服务器50_1至50_n和存储服务器60_1至60_m可经由网络70彼此通信。在一些实施例中,网络70可通过使用光纤信道(FC)、以太网等来实现。FC可以是用于相对高速数据传输的介质,并且可使用提供高性能和/或高可用性的光交换机。根据网络70的访问方法,存储服务器60_1至60_m可被提供为文件存储装置、块存储装置或对象存储装置。
在一个实施例中,网络70可包括存储专用网络(诸如,存储区域网络(SAN))。例如,SAN可使用FC网络,并且可以是根据FC协议(FCP)来实现的FC-SAN。可选地,SAN可包括互联网协议(IP)-SAN,互联网协议(IP)-SAN使用传输控制协议(TCP)/IP网络并且根据互联网小型计算机系统接口(iSCSI或TCP/IP上的SCSI)协议来实现。在一些施例中,网络70可包括通用网络(诸如,TCP/IP网络)。例如,网络70可根据诸如以太网上的FC(FCoE)、网络附加存储(NAS)或通过网络的NVMe(NVMe over Fabrics,NVMe-oF)的协议来实现。
在下文中,应用服务器50_1和存储服务器60_1将被主要描述,但是应用服务器50_1的描述也可被应用于另外的应用服务器(例如,50_n),存储服务器60_1的描述也可被应用于另外的存储服务器(例如,60_m)。
应用服务器50_1可经由网络70将用户或客户端已经请求存储的数据存储在存储服务器60_1至60_m之一中。另外,应用服务器50_1可经由网络70从存储服务器60_1至60_m之一获得用户或客户端已经请求读取的数据。例如,应用服务器50_1可由网络服务器、数据库管理系统(DBMS)等来实现。
应用服务器50_1可经由网络70访问被包括在另一应用服务器50_n中的存储器52_n或存储装置55_n,或者可经由网络70访问分别被包括在存储服务器60_1至60_m中的存储器62_1至62_m或存储装置65_1至65_m。因此,应用服务器50_1可对存储在应用服务器50_1至50_n和/或存储服务器60_1至60_m中的数据执行各种操作。例如,应用服务器50_1可执行用于在应用服务器50_1至50_n和/或存储服务器60_1至60_m之间移动或复制数据的指令。这里,数据可直接或通过存储服务器60_1至60_m的存储器62_1至62_m从存储服务器60_1至60_m的存储装置65_1至65_m被移动到应用服务器50_1至50_n的存储器52_1至52_n。在一些实施例中,经由网络70移动的数据可以是为了安全或隐私而加密的数据。
在存储服务器60_1中,接口IF可提供处理器61_1与控制器CTRL之间的物理连接以及NIC 64_1与控制器CTRL之间的物理连接。例如,接口IF可以以直接附加存储(DAS)方式来实现,其中,在直接附加存储(DAS)方式中,通过专用电缆直接进行到存储装置65_1的连接。另外,例如,接口IF可以以各种接口方式(诸如,高级技术附件(ATA)、串行ATA(SATA)、外部SATA(e-SATA)、小型计算机小型接口(SCSI)、串行附接SCSI(SAS)、外围组件互连(PCI)、PCI快速(PCIe)、NVM快速(NVMe)、IEEE 1394、通用串行总线(USB)、安全数字(SD)卡、多媒体卡(MMC)、嵌入式多媒体卡(eMMC)、通用闪存(UFS)、嵌入式通用闪存(eUFS)和紧凑型闪存(CF)卡接口等)来实现。
在存储服务器60_1中,交换机63_1可根据处理器61_1的控制选择性地将处理器61_1连接到存储装置65_1或者选择性地将NIC 64_1连接到存储装置65_1。
在一些实施例中,NIC 64_1可包括网络接口卡、网络适配器等。NIC 64_1可通过有线接口、无线接口、蓝牙接口、光学接口等连接到网络70。NIC 64_1可包括内部存储器、数字信号处理器(DSP)、主机总线接口等,并且可连接到处理器61_1和/或交换机63_1。在一些实施例中,NIC 64_1可与处理器61_1、交换机63_1和存储装置65_1中的至少一个集成。
在应用服务器50_1至50_n或存储服务器60_1至60_m中,处理器51_1至51_n和61_1至61_m可将命令发送到存储装置55_1至55_n和65_1至65_m或存储器52_1至52_n和62_1至62_m,因此将数据编程到存储装置55_1至55_n和65_1至65_m或存储器52_1至52_n和62_1至62_m或者从存储装置55_1至55_n和65_1至65_m或存储器52_1至52_n和62_1至62_m读取数据。这里,数据可以是由纠错码(ECC)引擎纠错的数据。数据可以是已经经历数据总线倒置(DBI)或数据掩码(DM)的数据,并且数据可包括循环冗余校验(CRC)信息。数据可以是为了安全或隐私而加密的数据。
存储装置55_1至55_n和65_1至65_m可响应于从处理器51_1至51_n和61_1to 61_m接收的读取命令而将控制信号和命令/地址信号发送到非易失性存储器装置NVM(例如,NAND闪存装置)。因此,当从非易失性存储器装置NVM读取数据时,读取使能信号可作为数据输出控制信号被输入,因此用于使数据被输出到数据队列(DQ)总线。可通过使用读取使能信号来生成数据选通。可根据写入使能信号的上升沿或下降沿锁存命令和地址信号。
控制器CTRL可对存储装置65_1的操作进行总体控制。在一个实施例中,控制器CTRL可包括静态随机存取存储器(SRAM)。控制器CTRL可响应于写入命令而将数据写入非易失性存储器装置NVM,或者可响应于读取命令而从非易失性存储器装置NVM读取数据。例如,写入命令和/或读取命令可由主机(例如,存储服务器60_1中的处理器61_1、另一存储服务器60_m中的处理器61_1m或应用服务器50_1至50_n中的处理器51_1至51_n提供。缓冲器BUF可临时存储(缓冲)将被写入非易失性存储器装置NVM或已经从非易失性存储器装置NVM读取的数据。另外,缓冲器BUF可存储DRAM中的数据或将被写入DRAM的数据。此外,缓冲器BUF可存储元数据,并且元数据可表示由控制器CTRL生成的用于管理非易失性存储器装置NVM的用户数据或数据。存储装置65_1可包括用于安全或隐私的安全元件(SE)。
虽然已经参照发明构思的示例实施例具体地示出并描述了发明构思,但是相关领域的普通技术人员将理解,在不脱离权利要求中阐述的本公开的精神和范围的情况下,可在其中进行形式和细节上的各种改变。

Claims (20)

1.一种存储器控制器,所述存储器控制器被配置为控制由经由总线连接到主机处理器的装置访问的存储器,所述存储器控制器包括:
第一接口电路,被配置为与主机处理器进行通信;
第二接口电路,被配置为与存储器进行通信;
错误检测电路,被配置为:响应于从第一接口电路接收的第一读取请求来检测存在于从第二接口电路读取的数据中的错误;
可变纠错电路,被配置为:基于包括在纠错选项中的参考延迟和参考纠错等级中的至少一个来纠正检测到的错误;以及
固定纠错电路,被配置为:与可变纠错电路的操作并行地纠正检测到的错误。
2.根据权利要求1所述的存储器控制器,其中,错误检测电路被配置为:
将读取的数据提供给可变纠错电路,使得可变纠错电路根据在参考延迟内是否能够满足参考纠错等级来纠正错误。
3.根据权利要求2所述的存储器控制器,其中,可变纠错电路被配置为:生成包括错误标志的读取响应,并且
其中,读取响应和纠正后的数据通过第一接口电路被提供给主机处理器。
4.根据权利要求1所述的存储器控制器,还包括:
缓冲器,存储由固定纠错电路纠正后的纠正数据。
5.根据权利要求4所述的存储器控制器,其中,当从第一接口电路接收到对数据的第二读取请求时,存储在缓冲器中的纠正数据通过第一接口电路被提供给主机处理器。
6.根据权利要求1至权利要求5中的任意一项所述的存储器控制器,还包括:
纠错设置电路,被配置为:通过第一接口电路和所述总线中的至少一个将装置信息提供给主机处理器,并且接收由主机处理器基于装置信息设置的纠错选项,装置信息包括由所述装置可实现的延迟值和由所述装置可实现的纠错等级值中的至少一个。
7.根据权利要求1至权利要求5中的任意一项所述的存储器控制器,其中,存储器被包括在附接到所述装置的装置存储器中,并且能够由主机处理器通过所述装置进行访问。
8.根据权利要求1至权利要求5中的任意一项所述的存储器控制器,其中,第一接口电路被配置为:基于所述总线的协议来与主机处理器进行通信。
9.一种数据处理方法,所述数据处理方法由经由总线连接到主机处理器的装置执行,所述数据处理方法包括:
从主机处理器接收第一读取请求;
将第一读取请求发送到存储器,并且从存储器读取与第一读取请求对应的数据;
检测读取的数据的错误;
基于包括在纠错选项中的参考延迟和参考纠错等级中的至少一个来纠正包括在读取的数据中的错误,以生成第一纠正数据;以及
将第一纠正数据提供给主机处理器。
10.根据权利要求9所述的数据处理方法,其中,纠正包括在读取的数据中的错误的步骤包括:
根据在参考延迟内是否能够满足参考纠错等级,通过固定纠错电路或可变纠错电路纠正错误,
其中,固定纠错电路被配置为:将读取的数据纠正到无错误状态,并且
其中,可变纠错电路被配置为:纠正读取的数据以满足参考纠错等级。
11.根据权利要求10所述的数据处理方法,其中,将第一纠正数据提供给主机处理器的步骤包括:
与由可变纠错电路纠正的第一纠正数据一起还提供对第一读取请求的读取响应,
其中,读取响应包括由可变纠错电路设置的错误标志。
12.根据权利要求10所述的数据处理方法,其中,固定纠错电路被配置为:
与可变纠错电路并行地纠正读取的数据以生成第二纠正数据,并且将第二纠正数据存储在缓冲器中。
13.根据权利要求12所述的数据处理方法,还包括:
从主机处理器接收对数据的第二读取请求;以及
将存储在缓冲器中的第二纠正数据提供给主机处理器。
14.根据权利要求9至权利要求13中的任意一项所述的数据处理方法,其中,存储器包括至少一个存储级存储器。
15.根据权利要求9至权利要求13中的任意一项所述的数据处理方法,其中,第一读取请求基于所述总线的协议经由所述总线从主机处理器被接收,并且
其中,第一纠正数据基于所述协议经由所述总线被提供给主机处理器。
16.一种存储系统,包括:
主机处理器,包括被配置为执行指令的至少一个核;
存储器控制器,经由总线连接到主机处理器;以及
存储器,被配置为通过存储器控制器被访问,
其中,存储器控制器被配置为:从存储器读取与主机处理器的第一读取请求对应的数据,并且并行地执行第一纠错操作和第二纠错操作,第一纠错操作基于包括在纠错选项中的参考延迟和参考纠错等级中的至少一个,第二纠错操作基于关于包括在读取的数据中的错误的最大纠错等级。
17.根据权利要求16所述的存储系统,其中,通过第一纠错操作生成的第一纠正数据被提供给主机处理器,并且
其中,通过第二纠错操作生成的第二纠正数据被存储在缓冲器中。
18.根据权利要求17所述的存储系统,其中,存储器控制器被配置为:生成包括错误标志的读取响应,并且将读取响应与第一纠正数据一起提供给主机处理器。
19.根据权利要求17所述的存储系统,其中,存储器控制器被配置为:响应于从主机处理器接收对数据的第二读取请求,来将存储在缓冲器中的第二纠正数据提供给主机处理器。
20.根据权利要求19所述的存储系统,其中,通过第一纠错操作生成第一纠正数据所需的时间短于通过第二纠错操作生成第二纠正数据所需的时间。
CN202111294683.2A 2020-11-18 2021-11-03 存储器控制器、存储系统和数据处理方法 Pending CN114550773A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020200154848A KR20220067992A (ko) 2020-11-18 2020-11-18 선택적 및 병렬적 에러 정정을 수행하는 메모리 컨트롤러, 이를 포함하는 시스템 및 메모리 장치의 동작 방법
KR10-2020-0154848 2020-11-18

Publications (1)

Publication Number Publication Date
CN114550773A true CN114550773A (zh) 2022-05-27

Family

ID=81587729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111294683.2A Pending CN114550773A (zh) 2020-11-18 2021-11-03 存储器控制器、存储系统和数据处理方法

Country Status (3)

Country Link
US (2) US11720442B2 (zh)
KR (1) KR20220067992A (zh)
CN (1) CN114550773A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230393930A1 (en) * 2022-06-02 2023-12-07 Micron Technology, Inc. Memory sub-system addressing for data and additional data portions

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009721A1 (en) 2001-07-06 2003-01-09 International Business Machines Corporation Method and system for background ECC scrubbing for a memory array
KR100594257B1 (ko) * 2004-02-26 2006-06-30 삼성전자주식회사 내장형 셀프 테스트 회로를 가지는 soc 및 그 셀프테스트 방법
US7427027B2 (en) 2004-07-28 2008-09-23 Sandisk Corporation Optimized non-volatile storage systems
KR102098246B1 (ko) 2013-04-29 2020-04-07 삼성전자 주식회사 호스트, 저장 장치, 및 이를 포함하는 시스템의 동작 방법
US9477550B2 (en) * 2013-10-24 2016-10-25 Globalfoundries Inc. ECC bypass using low latency CE correction with retry select signal
KR101699377B1 (ko) 2014-07-02 2017-01-26 삼성전자주식회사 불휘발성 메모리 및 메모리 컨트롤러를 포함하는 스토리지 장치 및 스토리지 장치의 동작 방법
US10250281B2 (en) 2016-12-30 2019-04-02 Sandisk Technologies Llc ECC decoder having adjustable parameters
US10372531B2 (en) * 2017-01-05 2019-08-06 Texas Instruments Incorporated Error-correcting code memory
US10707899B2 (en) * 2017-08-31 2020-07-07 SK Hynix Inc. Bit-flipping decoder for G-LDPC codes with syndrome-decoding for component codes
KR102410021B1 (ko) 2017-11-20 2022-06-21 에스케이하이닉스 주식회사 메모리 컨트롤러 및 메모리 모듈을 갖는 메모리 시스템 및 그 메모리 시스템에서의 데이터 처리 방법
US10901825B2 (en) 2018-10-22 2021-01-26 International Business Machines Corporation Implementing a storage drive utilizing a streaming mode
US11404097B2 (en) * 2018-12-11 2022-08-02 SK Hynix Inc. Memory system and operating method of the memory system
US11360695B2 (en) * 2020-09-16 2022-06-14 Micron Technology, Inc. Apparatus with combinational access mechanism and methods for operating the same

Also Published As

Publication number Publication date
US11720442B2 (en) 2023-08-08
US20220156146A1 (en) 2022-05-19
KR20220067992A (ko) 2022-05-25
US20230325277A1 (en) 2023-10-12

Similar Documents

Publication Publication Date Title
US11741034B2 (en) Memory device including direct memory access engine, system including the memory device, and method of operating the memory device
US20230325277A1 (en) Memory controller performing selective and parallel error correction, system including the same and operating method of memory device
CN115687193A (zh) 存储模块、包括其的系统以及存储模块的操作方法
US11556279B2 (en) System device, and method for memory interface including reconfigurable channel
US11962675B2 (en) Interface circuit for providing extension packet and processor including the same
US11983115B2 (en) System, device and method for accessing device-attached memory
US20220147470A1 (en) System, device, and method for accessing memory based on multi-protocol
US11610624B2 (en) Memory device skipping refresh operation and operation method thereof
US11853215B2 (en) Memory controller, system including the same, and operating method of memory device for increasing a cache hit and reducing read latency using an integrated commad
US11809341B2 (en) System, device and method for indirect addressing
US20230214258A1 (en) Storage controller and storage device
US20240096395A1 (en) Device, operating method, memory device, and cxl memory expansion device
US12008270B2 (en) System, device, and method for memory interface including reconfigurable channel
US20240134568A1 (en) Computational storage device, method for operating the computational storage device and method for operating host device
US20230376238A1 (en) Computing system for managing distributed storage devices, and method of operating the same
KR102403477B1 (ko) 스토리지 장치와 이를 포함하는 호스트-스토리지 시스템
US20230084539A1 (en) Computational storage device and storage system including the computational storage device
KR20230169885A (ko) 영구 메모리 장치 및 컴퓨팅 시스템
CN117746942A (zh) 装置、操作方法、存储器装置和cxl存储器扩展装置
KR20230144434A (ko) 호스트 장치의 동작 방법 및 스토리지 장치의 동작 방법
CN115878367A (zh) 存储器模块的操作方法、存储器控制器的操作方法
JP2021520556A (ja) トランザクションメタデータ
CN115480700A (zh) 数据存储方法、存储设备以及主机

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