CN111382000A - 半导体装置、存储器控制器与存储器访问方法 - Google Patents

半导体装置、存储器控制器与存储器访问方法 Download PDF

Info

Publication number
CN111382000A
CN111382000A CN201911300691.6A CN201911300691A CN111382000A CN 111382000 A CN111382000 A CN 111382000A CN 201911300691 A CN201911300691 A CN 201911300691A CN 111382000 A CN111382000 A CN 111382000A
Authority
CN
China
Prior art keywords
data
write
memory
sub
write data
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
Application number
CN201911300691.6A
Other languages
English (en)
Other versions
CN111382000B (zh
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN111382000A publication Critical patent/CN111382000A/zh
Application granted granted Critical
Publication of CN111382000B publication Critical patent/CN111382000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0653Monitoring storage devices or systems
    • 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
    • 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
    • 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
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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
    • 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

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)
  • Quality & Reliability (AREA)
  • Computer Security & Cryptography (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Correction Of Errors (AREA)
  • Memory System (AREA)

Abstract

本公开涉及半导体装置、存储器控制器与存储器访问方法。当多个写入数据被合并以生成用于保护存储在主存储器中的数据的代码时,写入数据在存储器控制器中被保护。第一代码生成单元基于存储在第一子存储器中的写入数据生成第一代码,并且将所生成的第一代码存储在第二子存储器中。子存储器控制器从第一子存储器读取要合并的写入数据,并通过使用存储在第二子存储器中的第一代码来验证所读取的写入数据是否包含错误。当所读取的写入数据不包含错误时,子存储器控制器将从第一子存储器读取的写入数据的有效数据合并,并将合并数据输出到第二代码生成单元。第二代码生成单元基于合并数据生成第二代码。

Description

半导体装置、存储器控制器与存储器访问方法
相关申请的交叉引用
于2018年12月25日提交的日本专利申请号2018-240740的公开内容(包括说明书、附图和摘要)整体通过引用并入本文。
技术领域
本发明涉及半导体装置、存储器控制器和存储器访问方法,并且例如涉及用于在存储器中存储添加有用于检测数据的错误检测的代码的数据的半导体装置、存储器控制器和存储器访问方法。
背景技术
作为用于保护写入存储器的数据的机制,使用用于检测和校正数据错误的错误校正代码(ECC)来进行代码错误校正是已知的。在代码错误校正中,例如,针对预定单位(诸如8字节)的数据,生成预定数据宽度(诸如1字节)的ECC。当在数据中发生预定比特数目的错误时,可以通过使用ECC校正该错误。
这里,当要写入存储器的数据的比特数目小于ECC的生成单位时,ECC不能只通过写入存储器的数据生成。为了生成ECC,需要执行读取-修改-写入(RMW),读取-修改-写入(RMW)用于读取存储在存储器中的数据、并将读取的数据与要写入存储器的数据合并。然而,当执行读取-修改-写入时,需要在将数据写入存储器之前从存储器读取一次数据,使得访问效率劣化。
关于ECC,公开号2011/154551的日本未审查专利申请公开了具有错误检测和校正装置的存储器装置。在公开号2011/154551的日本未审查专利申请中描述的存储器装置包括:生成用于每个数据的ECC的代码生成单元,和使用ECC检测或校正数据中的错误的检测校正单元。当要写入存储器的数据的比特数目等于存储器的数据宽度的比特数目时,代码生成单元使用数据生成ECC。代码生成单元还生成:指示ECC有效的标志信息,和用于标志信息的奇偶检查的检查信息。
在公开号2011/154551的日本未审查专利申请中描述的存储器装置中,当要写入存储器的数据的比特数目小于存储器的数据宽度的比特数目时,代码生成单元生成伪ECC代码。此外,代码生成单元生成标志信息和用于标志信息的奇偶检查的检查信息,该标志信息指示伪ECC不是用于错误检测和校正的代码。检测和校正单元参考标志信息,并且当ECC不是伪代码时,使用ECC针对从存储器读取的数据来执行错误检测和校正。当ECC是伪代码时,检测和校正单元不执行错误检测和校正。
关于ECC,公开号平成10(1998)/232789的日本未审查专利申请公开了ECC部分写入控制单元,该控制单元控制对写入数据的部分写入,该数据的数据宽度小于要作为检查比特生成的目标(诸如ECC)的数据宽度。在公开号平成10(1998)/232789的日本未审查专利申请中描述的ECC控制单元中,数据宽度小于要作为检查比特生成的目标的数据宽度的写入数据被存储在写入缓冲器中。
当写入缓冲器将数据存储在作为检查比特生成的目标的地址范围内,并且存储在写入缓冲器中的多个写入数据的数据宽度的总和等于ECC生成单元能够生成检查比特的数据宽度时,多路复用器将存储在写入缓冲器中的多个写入数据合并。在另一方面,当存储在写入缓冲器中的多个写入数据的数据宽度小于要作为检查比特生成的目标的数据宽度时,从存储器读取的数据被存储在读取缓冲器中。在这种情况下,多路复用器将写入缓冲器中的写入数据和读取缓冲器中的数据合并。ECC生成单元生成用于由多路复用器合并的数据的检查比特。
发明内容
在公开号2011/154551的日本未审查专利申请中,当要写入存储器的数据比特数目小于存储器的数据宽度比特数目时,生成伪ECC。在这种情况下,即使能够省略读取-修改-写入,也不能针对添加有伪ECC的数据执行错误校正,并且存储器中存储的数据不受保护。例如,如果要写入存储器的数据是重要数据,那么不保护数据可能是不可接受的。在这种情况下,为了保护数据,执行读取-修改-写入是必要的。
在公开号平成10(1998)/232789的日本未审查专利申请中,当写入数据的比特数目小于ECC的生成单位的比特数目时,写入数据被写入到写入缓冲器中,并且被写入到写入缓冲器中的多个写入数据被合并以生成ECC。以这种方式,在省略读取-修改-写入的同时,可以保护数据。然而,在公开号平成10(1998)/232789的日本未审查专利申请中,被写入到写入缓冲器中的数据不受保护。存在如下可能:被一次写入到写入缓冲器中的数据内容在合并之前被重写。然后,存在的问题是数据不能正确地被写入到存储器中。
通过本说明书和附图的描述,其他目的和新颖的特征将变得明显。
根据一个实施例,半导体装置包括存储器控制器。存储器控制器将包括有效数据的写入数据存储在第一子存储器中,并且将针对写入数据生成的和用于检测数据的错误的第一代码存储在第二子存储器中。当存在针对相同地址的多个写入请求时,存储器控制器确定具有预定数据宽度的数据是否可以通过合并多个写入请求的写入数据中的有效数据获得,该预定数据宽度是用于检测数据错误的第二代码的生成单位。当确定可以获得具有预定的数据宽度的数据时,存储器控制器从第一个子存储器读取要合并的写入数据,并使用第一代码验证所读取的写入数据是否包含错误。当所读取的写入数据不包含错误时,存储器控制器将从第一子存储器读取的写入数据中的有效数据合并,并且针对合并的数据生成第二代码。存储器控制器发出将通过向合并数据添加第二错误代码而获得的数据写入到主存储器中的命令。
根据上述实施例,当通过合并多个写入数据而生成用于检测数据错误的代码来保护要存储在主存储器中的数据时,写入数据可以在存储器控制器中受到保护。
附图说明
图1是示出了根据第一实施例的半导体装置的框图。
图2是示出了ECC控制器的配置示例的框图。
图3是示出了当主设备输出写入请求时的操作过程的流程图。
图4是示出了两个写入数据和合并数据的示意图。
图5是示出了写入数据的一个示例的示意图。
图6是示出了写入数据的另一示例的示意图。
图7是示出了存储在子存储器中的写入数据的示意图。
图8是示出了存储在子存储器中的ECC的示意图。
图9是示出了操作过程的流程图。
图10是示出了第三实施例中使用的ECC控制器的配置示例的框图。
图11是示出了操作过程的流程图。
图12是示出了根据第四实施例的半导体装置的图。
图13是示出了互连逻辑电路的配置示例的框图。
图14是示出了存储器控制器的配置示例的框图。
图15是示出了命令的历史和写入数据的数据示例的示意图。
图16是示出了第五实施例中使用的ECC控制器的配置示例的框图。
具体实施方式
在描述实施例之前,将描述关于以下实施例的背景。在半导体装置(特别是对于车载应用)中,通过将与数据对应的ECC写入DDR(双倍数据速率)存储器,来保护数据。在半导体装置中,例如,针对8字节数据生成1字节ECC。此时,如果数据小于8字节,那么不能只针对该数据生成ECC。在上述特定半导体装置中,对于无法生成ECC的数据,不生成ECC并且数据不受保护。
然而,从功能安全和保护的视角来看,保护小于8字节的、不能生成ECC的数据还是必要的。可以通过执行针对小于8字节的数据的读取-修改-写入,来生成ECC。然而,在那种情况下,性能会发生显著退化。本发明的发明人已经研究了能够在尽可能多地省略读取-修改-写入的同时提升数据保护可靠性的半导体装置。因此经过考虑,发明人得出了要在下面描述的实施例。
在下文中,下面将参考附图详细描述用于解决上述问题的手段所应用的实施例。为了解释清楚,以下描述和附图将适当省略和简化。此外,附图中描述为用于执行各种处理的功能块的元件可以在硬件方面被配置为CPU(中央处理单元)、存储器和其他电路,并且在软件方面由加载到存储器中的程序来实现。因此,本领域的技术人员会理解这些功能块可以通过单独的硬件、单独的软件或它们的组合以各种方式实现,并且本发明不限于他们中的任何一个。在附图中,相同的元素由相同的参考标记表示,并且必要时省略对他们的重复描述。
此外上述程序可以被存储并提供给使用各种类型的非暂态计算机可读介质的计算机。非暂态计算机可读介质包括各种类型的有形的存储介质。非暂态计算机可读介质的示例包括磁记录介质(例如,软盘、磁带、硬盘)、磁光记录介质(例如,磁光盘)、CD-ROM(紧凑盘-只读存储器)、CD-R(可记录的)、CD-R/W(可重写的)、以及半导体存储器(例如掩模ROM、PROM(可编程ROM)、EPROM(可擦除PROM)、闪存ROM、RAM(随机访问存储器))。程序还可以通过各种类型的暂态计算机可读介质被供应给计算机。暂态计算机可读介质的示例包括电信号、光信号和电磁波。暂态计算机可读介质可以经由有线或无线的通信路径(诸如电线和光纤)向计算机提供程序。
为了方便起见,在必要的情况下将本发明分成多个部分或实施例的同时,将使用以下实施例来描述本发明。然而,除了特别指出的情况外,这些部分或实施例不是彼此不相关的,并且所具有的关系是:一个作为另一个的修改示例、应用、详细说明或补充说明的一部分或全部。在下面的实施例中,元素的数目等(包括元素的数目、数值、数量、范围等)不限于特定的数目,但是可以不小于或等于特定的数目,除了数目被特别指示并且在原则上明确限于特定数目的情况。
此外,在下面的实施例中,构成元素(包括操作步骤等)不一定是必需的,除了他们被特别指出的情况、以及他们在原则上被认为是明显必需的情况。类似地,在下面的实施例中,当涉及组件等的形状、位置关系等时,假定形状等基本上接近或类似于形状等,除了他们被特别指出的情况、和他们在原则上被认为是明显的情况等。这同样适用于上述数目等,包括数目、数值、量、范围等。
第一实施例
图1示出了根据第一实施例的半导体装置。半导体装置10包括主设备11和存储器控制器20。主设备11发出对主存储器30的访问请求。主设备11是总线主设备,并且被配置为处理器,诸如CPU或GPU(图形处理单元)。主存储器30被配置为存储器装置,诸如DDR-SDRAM(同步动态随机访问存储器)。例如,对主存储器30的访问请求包括指示读取或写入的访问类型、指示访问目的地地址信息的信息等。下文中,访问类型是写入的访问请求可以被称为写入请求,并且访问类型是读取的访问请求可以被称为读取请求。
存储器控制器20经由总线等被耦合到主设备11,并且根据从主设备11接收的访问请求来访问主存储器30。存储器控制器20包括ECC控制器21和命令发出单元23。ECC控制器21从主设备接收写入请求,并向根据写入请求要写入主存储器30的数据添加ECC,ECC是用于错误检测和校正的代码。
命令发出单元23发出命令(写入命令),以将添加有ECC的数据写入到主存储器30中。命令发出单元23将对写入命令的响应返回给主设备11。此外,命令发出单元23从主设备11接收读取请求,并发出命令(读取命令),以根据接收的读取请求从主存储器30读取数据。命令发出单元23将对读取命令的响应(包括读取的数据)返回给主设备11。命令发出单元23还执行用于写入请求和读取请求的调度。
<存储器控制器>
图2示出了ECC控制器21的配置示例。ECC控制器21包括子存储器211、ECC生成单元212、子存储器213、子存储器控制器214、ECC检查单元215和ECC生成单元216。在ECC控制器21中,例如,ECC生成单元212、ECC检查单元215和ECC生成单元216可以被配置为硬件电路。子存储器控制器214可以配置有包括处理器的电路。
子存储器211存储包括有效数据的写入数据,其是根据写入请求被写入主存储器30中的数据。ECC生成单元212基于存储在子存储器211中的写入数据生成ECC。例如,由ECC生成单元212生成的ECC是用于校正写入数据中预定比特数目的错误的代码。在本实施例中,假设即使当写入数据中包括无效数据时,ECC生成单元212也会生成针对整个写入数据的ECC。ECC生成单元212将生成的ECC存储在子存储器213中。使用例如SRAM(静态RAM)的存储器装置,作为子存储器211和213。注意,子存储器211和213不一定必须由物理上彼此分离的独立装置组成。
ECC检查单元215通过子存储器控制器214获得存储在子存储器211中的写入数据和存储在子存储器213中的ECC。ECC检查单元215是写入数据验证单元,并使用存储在子存储器213中的ECC验证存储在子存储器211中的写入数据中是否发生错误。ECC检查单元215向子存储器控制器214输出验证结果。
ECC生成单元216从子存储器控制器214获得要写入到主存储器30中的数据。ECC生成单元216基于要以预定数据宽度为单位写入主存储器30的数据,生成ECC。这里由ECC生成单元212生成的ECC被用于保护子存储器211中的写入数据。另一方面,由ECC生成单元216生成的ECC被用于保护主存储器30中存储的数据。
子存储器控制器214管理子存储器211中存储的写入数据在主存储器30中的写入目的地的地址信息。当存在对主存储器30中的相同地址的多个写入请求时,子存储器控制器214确定具有预定数据宽度的数据是否可以通过合并写入请求的写入数据中的有效数据来获得,该预定数据宽度是由ECC生成单元216生成的ECC的生成单位。
例如,子存储器211针对每个写入请求将写入数据存储在单独的条目中。子存储器控制器214检查具有相同写入目的地地址的多个写入数据是否存储在子存储器211中。当存储了具有相同写入目的地地址的多个写入数据时,子存储器控制器214确定具有预定数据宽度的数据是否可以通过合并多个写入数据中的有效数据来获得。当确定可以获得具有预定数据宽度的数据时,子存储器控制器214从子存储器211读取要合并的写入数据。子存储器控制器214将读取的写入数据输出到ECC检查单元215,并且ECC检查单元215验证写入数据是否包括错误。
ECC检查单元215从子存储器控制器214获得写入数据和ECC,并确定写入数据是否包括错误。当确定写入数据包括错误时,ECC检查单元215使用ECC校正写入数据。当写入数据可以被校正时,ECC检查单元215向子存储器控制器214输出经校正的写入数据。当写入数据不能被校正时,ECC检查单元215向子存储器控制器214输出写入数据包括错误的信息。当ECC检查单元215确定写入数据包括错误时,子存储器控制器214执行错误处理。
当ECC检查单元215确定写入数据不包括错误时,子存储器控制器214将从子存储器211读取的要合并的数据中的有效数据合并,并将合并数据输出到ECC生成单元216。ECC生成单元216基于合并数据生成ECC。ECC生成单元216将合并数据和生成的ECC输出到命令发出单元23。命令发出单元23生成将数据写入到主存储器30中的命令,并将命令输出到主存储器30,该数据是通过将ECC添加到合并数据而获得的。主存储器30根据输出的命令,将数据写入到写入目的地地址,该数据是通过将ECC添加到合并数据而获得的。
<操作过程>
图3示出了当主设备输出写入请求时的操作过程。存储器控制器20经由总线从主设备11接收写入请求。存储器控制器20中的子存储器211暂时存储写入数据。ECC生成单元212基于写入数据生成ECC,并将生成的ECC存储在子存储器213中。
当接收到写入请求时,子存储器控制器214查阅子存储器211,并确定是否存在准备好有效数据的主存储器30的地址(步骤A1)。例如,在步骤A1中,子存储器控制器214确定:当合并存储在子存储器211中具有相同写入目的地地址的多个写入数据中的有效数据时,是否获得具有预定数据宽度的数据,该预定数据宽度是ECC生成单元216中的ECC的生成单位。当确定可以通过合并多个写入数据中的有效数据来获得具有预定数据宽度的数据时,子存储器控制器214确定存在准备好有效数据的主存储器30的地址。子存储器控制器214还确定:当写入数据的方式不是部分写入时,换言之,当写入数据的数据宽度等于预定数据宽度时,存在准备好有效数据的主存储器30的地址。
当在步骤A1中确定存在准备好有效数据的主存储器30的地址时,子存储器控制器214从子存储器211读取要合并的一个写入数据,并从子存储器213读取与读取的写入数据对应的ECC(步骤A2)。ECC检查单元215使用步骤A2中读取的ECC来验证步骤A2中读取的写入数据(步骤A3)。当写入数据包括错误且可以使用ECC校正该错误时,ECC检查单元215校正写入数据。ECC检查单元215将验证结果输出到子存储器控制器214。
子存储器控制器214确定写入数据中是否发生错误(步骤A4)。如果确定发生了错误,那么子存储器控制器214执行错误处理(步骤A5)。例如,在步骤A5中,子存储器控制器214请求发出写入请求的主设备11重新传输写入请求。当重新传输写入请求时,正确的数据可以被写入到主存储器30中。备选地,子存储器控制器214可以从主存储器30读取发生错误的数据的一部分来补偿数据,或者可以放弃发生错误的写入数据。在这些情况下,可以避免将发生错误的数据写入到主存储器30中。
当确定写入数据中没有发生错误时,子存储器控制器214确定是否准备好有效数据的地址的所有写入数据已被读取(步骤A6)。如果确定写入数据未被全部读取,那么子存储器控制器214返回到步骤A2,并从子存储器211和213读取下一个写入数据和ECC。子存储器控制器214重复步骤A2到A4,直到在步骤A6中确定所有写入数据已被读取。
当在步骤A6中确定所有写入数据已被读取时,子存储器控制器214合并读取的写入数据中的有效数据(步骤A7)。ECC生成单元216基于步骤A7中合并的有效数据生成ECC(步骤8)。命令发出单元23生成将数据写入主存储器30的命令,并将生成的命令输出到主存储器30(步骤A9),该数据是通过将步骤A8中生成的ECC添加到步骤A7中合并的有效数据而获得的。
<操作示例>
下文中,将描述操作示例。图4示意性地示出了两个写入数据和合并数据。这里假设主设备11输出用于将写入数据500写入到主存储器30的地址X的写入请求,并且然后输出用于将写入数据510写入到主存储器30的地址X的写入请求。写入数据500包括有效数据(DATA_A)501和无效数据502。写入数据510包括无效数据511和有效数据(DATA_B)512。
ECC控制器21将写入数据500和510存储在子存储器211中单独的条目中。ECC生成单元212基于写入数据500生成ECC 505,并将ECC 505存储在子存储器213中。ECC生成单元212基于写入数据510生成ECC 515,并将ECC 515存储在子存储器213中。
关于地址X,当合并写入数据500中的有效数据501和写入数据510中的有效数据512时,在图3的步骤A1中,子存储器控制器214确定获得具有预定数据宽度的数据,该预定数据宽度是ECC生成单元216中的ECC的生成单位。在这种情况下,在步骤A2中,子存储器控制器214从子存储器211读取写入数据500并从子存储器213读取ECC 505。在步骤A3中,子存储器控制器214使用ECC 505验证写入数据500。
当写入数据500不包括错误时,返回到A2,子存储器控制器214从子存储器211读取写入数据510并从子存储器213读取ECC 515。在步骤A3中,子存储器控制器214使用ECC 515验证写入数据510。
当确定写入数据510不包括错误时,在步骤A7中,子存储器控制器214将写入数据500中的有效数据501和写入数据510中的有效数据512合并,以生成数据(写入数据)520。此时,有效数据501和有效数据512重叠的地址的数据被写入数据510中的有效数据512覆写,这随后被输出。在步骤A8中,ECC生成单元216基于写入数据520生成ECC 525。在步骤A9中,命令发出单元23生成将数据写入到主存储器30中的命令,该数据通过将ECC 525添加到写入数据520而获得。
在本实施例中,子存储器211存储写入请求的写入数据,并且子存储器213存储写入数据的ECC。当合并写入数据中的有效数据时,子存储器控制器214确定是否准备好生成要存储在主存储器30中的ECC所需的数据。当确定准备好生成ECC所需的数据时,子存储器控制器214从子存储器211读取要合并的写入数据,然后从子存储器213读取要合并的写入数据的ECC。ECC检查单元215使用从子存储器213读取的ECC来验证存储在子存储器211中的写入数据。当写入数据中不包括错误时,子存储器控制器214合并所读取的写入数据中的有效数据。ECC生成单元216生成用于合并数据的ECC,并且命令发出单元23生成将合并数据和ECC写入到主存储器30中的命令。
在本实施例中,当包括无效数据的写入数据(针对该数据,无法生成要存储在主存储器30中的ECC)从主设备11被输出时,包括无效数据的写入数据被存储在子存储器211中,而不执行读取-修改-写入。在本实施例中,通过合并多个写入数据中的有效数据,可以获得具有生成ECC所需的预定数据宽度的数据。因此,即使省略了读取-修改-写入操作,也可以保护主存储器30中的数据。在本实施例中,ECC生成单元212生成用于存储在子存储器211中的写入数据的ECC,并且ECC检查单元215使用ECC生成单元212生成的ECC,来验证存储在子存储器211中的写入数据是否包括错误。以这种方式,可以在存储器控制器20中保护存储在子存储器211中的写入数据。
第二实施例
接着,将描述第二实施例。根据本实施例的半导体装置的配置可以与图1中所示的根据第一实施例的半导体装置10的配置相同。本实施例中的ECC控制器的配置可以与图2中所示的ECC控制器21的配置相同。在本实施例中,写入数据包括多个块,并且写入请求包括针对写入数据每个块的指示有效或无效数据的信息。在本实施例中,ECC生成单元212生成与写入数据中有效数据对应的用于每个块的ECC。
在本实施例中,子存储器211将写入数据存储在针对主存储器30中每个写入目的地地址的单独条目中。此外,子存储器213将ECC存储在针对每个写入目的地地址的单独条目中。当接收到写入请求时,子存储器控制器214检查子存储器211中是否有用于存储接收的写入请求的写入目的地地址的写入数据的条目。当没有条目时,子存储器控制器214在子存储器211中创建新的条目,并将写入数据中的有效数据部分存储在条目中。在这种情况下,由ECC生成单元212生成的与有效数据对应的针对每个块的ECC被存储在与新生成的条目对应的子存储器213中的条目中。
当已经存在用于存储写入请求的写入目的地地址的写入数据的条目时,子存储器控制器214用有效数据覆写存储在该条目中的写入数据中的、与新接收的写入请求的写入数据中的有效数据对应的块的数据。此时,ECC生成单元212用生成的ECC覆写存储在子存储器213中的ECC中的、与新接收的写入请求的写入数据中的有效数据对应的块的ECC。
<数据示例>
下面使用具体的示例描述本实施例。图5示出了写入数据的示例。写入数据500包括例如总共八个块。假设每个块的数据长度是8个比特。每个块中设置了指示数据有效和无效的标志。在写入数据500中,块0到5的五个块的标志被设置为“有效”,并且块6和7的标志被设置为“无效”。在这种情况下,写入数据500的每个块的数据A0到A7中,数据A0到A6构成作为有效数据的DATA_A,并且数据A6和A7构成无效数据。
ECC生成单元212基于写入数据500生成ECC 506。与写入数据500类似,ECC 506包括总共八个块。例如,ECC生成单元212针对每个块的8比特数据生成5比特的ECC。ECC生成单元212基于数据A1到A5,针对每个块生成5比特的ECC_A0到ECC_A5。ECC生成单元212不生成针对作为无效数据的数据A6和A7的ECC。在这种情况下,可以验证数据A0到A5是否包括错误,并通过使用ECC_A0到ECC_A5校正错误。
图6示出了写入数据的另一个示例。与写入数据500类似,写入数据510被分成总共8块。在写入数据510中,块0到4的5个块的标志被设置为“无效”,且块5到7的标志被设置为“有效”。在这种情况下,写入数据510的每个块的数据B0到B7中,数据B5到B7构成作为有效数据的DATA_B,并且数据B0和B4构成无效数据。
ECC生成单元212基于写入数据510生成ECC 507。与写入数据510类似,ECC 507包括总共八个块。ECC生成单元212基于数据B5到B7,针对每个块生成ECC_B5到ECC_B7。ECC生成单元212不生成针对作为无效数据的数据B0到B4的ECC。在这种情况下,可以验证数据B5到B7是否包括错误,并通过使用ECC_B5到ECC_B7校正错误。
图7示出了存储在子存储器211中的写入数据。当接收到具有作为写入目的地的新地址的写入数据500的写入请求时,子存储器211存储写入数据500。假设当写入数据的8个块的所有标志都是“有效”时,ECC生成单元216能够生成要存储在主存储器30中的ECC。
接着,假设接收到写入数据510的写入请求,写入数据510的写入请求具有与写入数据500的写入请求的写入目的地地址相同的写入目的地地址。在这种情况下,存储在子存储器211中的写入数据500的数据A5到A7被写入数据510中标志为“有效”的块的数据B5到B7覆写。在覆写之后的写入数据520由数据A0到A4和数据B5到B7组成。如上所述,在本实施例中,写入数据500中的有效数据和写入数据510中的有效数据在子存储器211中合并。
图8示出了存储在子存储器213中的ECC。ECC生成单元212生成用于写入数据500的ECC 506,并将生成的ECC存储在子存储器213中。ECC 506包括针对数据A0-A5的每个块生成的ECC_A0-A5。ECC生成单元212生成用于写入数据510的ECC 507。ECC 507包括针对数据B5-B7的每个块生成的ECC_B5-B7。通过用ECC 507覆写存储在子存储器213中的ECC 506,获得由ECC_A0到ECC_A4和ECC_B5到ECC_B7组成的ECC 508。可以验证存储在子存储器211中的写入数据520(图7)的每个块是否包括错误,并通过使用该ECC 508校正错误。
<操作过程>
图9示出了操作过程。存储器控制器20经由总线从主设备11接收写入请求。当存储器控制器20中的子存储器211中没有用于存储与写入请求的写入目的地的地址对应的写入数据的条目时,写入数据暂时存储在子存储器211中。当子存储器211中已经有用于存储与写入目的地的地址对应的写入数据的条目时,用写入数据的有效数据覆写存储在子存储器211中的数据中的、与写入数据中的有效数据对应的块的数据。ECC生成单元212基于写入数据中的有效数据部分生成ECC,并将生成的ECC存储在子存储器213中。
当接收到写入请求时,子存储器控制器214查阅子存储器211,并确定是否存在准备好有效数据的主存储器30的地址(步骤B1)。例如,在步骤B1中,子存储器控制器214检查是否存在子存储器211的每个块的所有标志都是“有效”的条目。当存在所有块的标志都是“有效”的条目时,子存储器控制器214确定存在准备好有效数据的主存储器30的地址。
在步骤B1中,如果确定存在准备好有效数据的主存储器30的地址,那么子存储器控制器213从子存储器211读取写入数据,并从子存储器213读取与读取的写入数据对应的ECC(步骤B2)。在本实施例中,如上所述,由于包括无效数据的多个写入数据在子存储器211中合并,因此在从子存储器211读取后不需要合并多个写入数据。
ECC检查单元215使用步骤B2中读取的ECC来验证在步骤B2中读取的写入数据的每个块的数据(步骤B3)。例如,ECC检查单元215使用图8中所示的ECC 508中的ECC_A0来验证图7中所示的写入数据中的数据A0。ECC检查单元215使用ECC 508的ECC_A0到ECC_A4和ECC_B4到ECC_B7来验证写入数据的数据A1到A4和数据B4到B7中的每个数据。当写入数据中的任何块中存在错误且可以使用对应块的ECC校正该错误时,ECC检查单元215校正块的数据。ECC检查单元215将验证结果输出到子存储器控制器214。
子存储器控制器214确定写入数据中是否发生错误(步骤B4)。如果确定发生了错误,那么子存储器控制器214执行错误处理(步骤B5)。步骤B5可以与图3的步骤A5相同。
如果确定步骤B4中没有发生错误,那么子存储器控制器214将读取的写入数据输出到ECC生成单元216。ECC生成单元216基于写入数据生成ECC(步骤B6)。命令发出单元23生成将数据写入到主存储器30中的命令,并且将生成的命令输出到主存储器30(步骤B7),该数据是通过将步骤B6中生成的ECC添加到写入数据而获得的。
在本实施例中,写入数据包括多个块,并且与多个写入数据中的有效数据对应的块在子存储器211中被合并。ECC生成单元212生成与写入数据中的有效数据对应的每个块的ECC,并将生成的ECC存储在子存储器213中。即使当存储在子存储器213中的ECC被新生成的ECC覆写时,通过使ECC生成单元212生成的ECC的生成单位对应于写入数据的块,也可以使用存储在子存储器213中的ECC来验证子存储器211中的写入数据的每个块的数据。在第一实施例中,将具有相同写入目的地地址的多个写入数据分别存储在子存储器211中的单独条目中。在本实施例中,只需要一个条目来存储针对写入目的地地址的写入数据,并且与第一实施例相比较,可以减少子存储器211需要的条目的数目(存储器容量)。
第三实施例
接着,将描述第三实施例。在第一和第二实施例中,当在子存储器211中准备好生成要存储在主存储器30中的ECC所需要的数据时,ECC生成单元216生成ECC。在这种情况下,当主设备11(图1)未输出具有相同写入目的地地址的多个写入请求时,就未准备好生成要存储在主存储器30中的ECC所需要的数据,并且将写入数据存储在主存储器30中所需要的时间变得更长。在本实施例中,当满足预定的条件时,存储器控制器20执行读取-修改-写入,而不等待具有相同写入目的地地址的写入请求来生成要存储在主存储器30中的ECC。其他的要点可以与第一或第二实施例相同。
图10示出了本实施例中使用的ECC控制器的配置示例。除了图2中所示的ECC控制器21的配置以外,本实施例中使用的ECC控制器21a还包括RMW计时器217。在本实施例中,当满足预定的条件时,子存储器控制器214通过命令发出单元23(图2)从主存储器30读取写入数据的写入目的地地址的数据。子存储器控制器214将从主存储器30读取的数据和存储在子存储器211中的写入数据中的有效数据合并,并将合并的有效数据输出到ECC生成单元216。
当接收到写入请求时,RMW计时器217开始时间测量,并且在经过预定时间后超时。例如,在从接收针对每个写入目的地地址的第一写入请求开始经过预定时间后,RMW计时器217超时。备选地,RMW计时器217可以在从接收针对每个写入目的地地址的最后写入请求开始经过预定时间后超时。当RMW计时器217超时的时候,子存储器控制器214确定预定的条件被满足。
<操作过程>
图11示出了操作过程。存储器控制器20经由总线从主设备11接收写入请求。存储器控制器20中的子存储器211暂时存储写入数据。ECC生成单元212基于写入数据生成ECC,并在子存储器213中存储生成的ECC。
当接收到写入请求时,子存储器控制器214查阅子存储器211,并确定是否存在准备好有效数据的主存储器30的地址(步骤C1)。例如,在步骤C1中,子存储器控制器214确定:当存储在子存储器211中的相同的写入目的地地址的多个写入数据中的有效数据合并时,是否获得具有预定数据宽度的数据,该预定数据宽度是ECC生成单元216中的ECC的生成单位。当确定可以通过合并多个写入数据中的有效数据来获得具有预定数据宽度的数据时,子存储器控制器214确定存在准备好有效数据的主存储器30的地址。
当在步骤C1中确定存在准备好有效数据的主存储器30的地址时,子存储器控制器214从子存储器211读取要合并的写入数据,并从子存储器213读取与写入数据对应的ECC(步骤C2)。ECC检查单元215使用在步骤C2中读取的ECC验证在步骤C2中读取的写入数据(步骤C3)。当写入数据中存在错误且可以使用ECC校正该错误时,ECC检查单元215校正写入数据。ECC检查单元215将验证结果输出到子存储器控制器214。
当写入数据中未发生错误时,子存储器控制器214将写入数据中读取的有效数据合并,并将合并的有效数据输出到ECC生成单元216。当写入数据中发生错误时,子存储器控制器214可以执行错误处理。ECC生成单元216基于合并的有效数据生成ECC(步骤C4)。命令发出单元23生成将数据写入到主存储器30中的命令,并将生成的命令输出到主存储器30(步骤C5),该数据是通过将步骤C4中生成的ECC添加到合并的有效数据而获得的。步骤C1-C5的操作可以与图3中的步骤A1-A4和A6-A9的操作相同。备选地,步骤C1-C5的操作可以与图9中的步骤B1-B4、B6和B7的操作相同。
如果在步骤C1中确定不存在准备好有效数据的地址,那么子存储器控制器214确定RMW计时器217是否超时(步骤C6)。如果在步骤C6中子存储器控制器214确定RMW计时器217未超时,那么该处理返回到步骤C1。如果在步骤C6中确定RMW计时器217超时,那么子存储器控制器214从主存储器30读取数据(步骤C7)。在步骤C7中,当包括无效数据的写入数据(例如,其中地址X是写入目的地地址)被存储在子存储器211中时,子存储器控制器214通过命令发出单元23从主存储器30获得地址X的数据。
与步骤C7并行,子存储器控制器214从子存储器211读取写入数据并从子存储器213读取ECC(步骤C8)。ECC检查单元215使用步骤C8中读取的ECC来验证步骤C8中读取的写入数据(步骤C9)。当写入数据中存在错误且可以使用ECC校正该错误时,ECC检查单元215校正写入数据。ECC检查单元215将验证结果输出到子存储器控制器214。
当写入数据中未发生错误时,子存储器控制器214将读取的写入数据中的有效数据和步骤C7中从主存储器30读取的数据合并,并将合并的数据输出到ECC生成单元216。当写入数据中发生错误时,子存储器控制器214可以执行错误处理。在步骤C4中,ECC生成单元216基于合并的数据生成ECC。在步骤C5中,命令发出单元23生成将数据写入到主存储器30中的命令,并将生成的命令输出到主存储器30,该数据是通过将ECC生成单元216生成的ECC添加到合并的数据而获得的。
在本实施例中,当RMW计时器217超时的时候,子存储器控制器214执行与普通读取-修改-写入相同的操作,并将从主存储器30读取的数据和包括无效数据的写入数据合并。在本实施例中,在从子存储器211中存储写入数据开始经过预定时间之后,包括写入数据的数据可以被写入主存储器30,并且可以抑制写入数据在子存储器211中的停留。因此,在本实施例中,可以减少子存储器211所需求的存储器容量。此外,在本实施例中,由于期望写入数据在经过预定时间之后被写入主存储器30,因此可以定量地估计性能。
第四实施例
接着,将描述第四实施例。图12示出了根据本实施例的半导体装置。根据本实施例的半导体装置10b包括主设备11、主设备12、存储器控制器20b、主存储器30和互连逻辑电路40。主设备11和12是总线主设备,并且输出对主存储器30的访问请求。互连逻辑电路40经由对应的总线接收主设备11和12发出的访问请求。互连逻辑电路40选择性地将从主设备11和12输出的访问请求输出到存储器控制器20b。
例如,互连逻辑电路40是总线仲裁器,并且仲裁从多个主设备输入的访问请求。当从主设备11和12接收到访问请求时,例如,根据针对每个主设备的优先级设置,互连逻辑电路40可以将由高优先级主设备发出的访问请求输出到存储器控制器20b。当获得对输出到存储器控制器20b的访问请求的响应时,互连逻辑电路40选择由具有次高优先级的主设备发出的访问请求,并将该访问请求输出到存储器控制器20b。
虽然图12示出了半导体装置10b具有两个主设备的示例,但是如果半导体装置10b具有用于向存储器控制器20b发出针对主存储器30的访问请求的至少一个主设备,不特别限制主设备的数目。在本实施例中,半导体装置10b可以具有三个或更多主设备,并且半导体装置10b可以具有一个主设备。当主设备的数目为一时,互连逻辑电路40可以省略。
<互连逻辑电路>
图13示出了互连逻辑电路40的配置示例。互连逻辑电路40包括仲裁器41和请求监测器(请求监测单元)42。仲裁器41选择性地将从主设备11和12输出的访问请求输出到存储器控制器20b。请求监测器42监测从主设备11和12输出的访问请求。请求监测器42将互连状态输出到存储器控制器20b,互连状态指示主设备11和12的存储器访问请求的发出状态。请求监测器42不一定被包括在互连逻辑电路40中,并且可以被提供在互连逻辑电路40外部。
<存储器控制器>
图14示出了存储器控制器20b的配置示例。存储器控制器20b包括ECC控制器21b和命令发出单元23b。除了图2中所示的ECC控制器21的配置以外,ECC控制器21b还具有总线状态控制器218。ECC控制器21b可以进一步包括RMW计时器217(图10)。在本实施例中,与第三实施例类似,当满足预定条件时,子存储器控制器214执行读取-修改-写入,而不等待具有相同写入目的地地址的写入请求,并生成要存储在主存储器30中的ECC。
总线状态控制器218从请求监测器42获得互连状态。子存储器控制器214通过总线状态控制器218获得主设备11和12的存储器访问请求的发出状态,并根据存储器访问请求的发出状态,来确定用于执行读取-修改-写入的预定条件是否被满足。
例如,当互连逻辑电路40接收到从主设备11和12中的至少一个主设备输出的存储器访问请求时,子存储器控制器214等待具有相同写入目的地地址的写入请求。例如,当互连逻辑电路40未接收到从主设备11和12中的至少一个主设备输出的存储器访问请求时,子存储器控制器214确定预定的条件被满足。在这种情况下,子存储器控制器214以与图11中的步骤C7到C10中相同的过程,将从主存储器30读取的数据和从子存储器211读取的写入数据合并。
当接收到新的写入请求时,子存储器控制器214可以确定具有与新接收到的写入请求的写入目的地地址相同的写入目的地地址的写入数据是否被存储在子存储器211中。当具有相同的写入目的地地址的写入数据未被存储在子存储器211中时,子存储器控制器214可以确定预定的条件被满足。在这种情况下,子存储器控制器214可以以与图11中的步骤C7中相同的过程,从主存储器30读取数据,并将读取的数据和写入数据中的有效数据合并。
命令发出单元23b包括命令历史存储单元231。命令历史存储单元231存储由命令发出单元23发出的存储器访问命令的历史。例如,命令历史存储单元231存储最后三条命令的历史。通过查阅命令历史存储单元231,可以知道访问了主存储器30的哪个库。
例如,在诸如DDR的存储器装置中,访问之间的惩罚周期取决于最后访问和下次访问的库地址而被确定。因此,访问时间可以取决于下次访问的块和最后访问的块的组合而改变。子存储器控制器214可以基于存储在命令历史存储单元231中的历史来估计访问时间,并且然后确定接下来要写入主存储器30的写入数据。
例如,针对存储在子存储器211中的每个写入数据(包括需要读取-修改-写入的写入数据),子存储器控制器214计算将写入数据写入主存储器30的访问时间。子存储器控制器214选择具有最小惩罚的写入数据,必要时执行读取-修改-写入,使ECC生成单元216生成ECC,并使命令发出单元23发出将数据写入主存储器30的命令,在该数据中向写入数据添加ECC。以这种方式,可以根据情况实现高效的存储器访问。
图15示出了存储在命令历史存储单元231中的历史和存储在子存储器211中的写入数据的数据示例。命令历史存储单元231存储历史,例如,该历史指示最后存储器访问是对库0的访问,倒数第二次存储器访问是对库0的访问,且倒数第三次存储器访问是对库3的访问。子存储器211从条目0到条目4一共存储五个写入数据。存储在条目0和1中的写入数据是不包括无效数据的写入数据,或者是通过与另一个条目的写入数据合并而变成具有预定数据宽度的数据的写入数据,预定数据宽度是要存储在主存储器30中的ECC的生成单位。另一方面,存储在条目2到4中的写入数据包括无效数据,并且是需要读取-修改-写入操作以将写入数据写入在主存储器30中的写入数据。
假设存在存储在子存储器211的条目0和1中的写入数据的写入目的地地址的库是库0,并且存在存储在条目2中的写入数据的写入目的地地址的库是库3。假设存在存储在条目3中的写入数据的写入目的地地址的库是库2,并且存在存储在条目4中的写入数据的写入目的地地址的库是库1。
基于存储在每个条目中的写入数据的访问目的地的库、和存储在命令历史存储单元231中的过去存储器访问的访问目的地的库,子存储器控制器214计算当将存储在每个条目中的写入数据写入到主存储器30中时的访问时间。例如,当接下来存储在条目0和1中的写入数据被写入到主存储器30中时,子存储器控制器214计算出需要20个周期用于写入。当接下来将存储在条目2中的写入数据写入到主存储器30中时,子存储器控制器214计算出需要2个周期用于写入,并且当接下来将存储在条目3中的写入数据写入到主存储器30时,子存储器控制器214计算出需要10个周期用于写入。当接下来将存储在条目4中的写入数据写入到主存储器30中时,子存储器控制器214计算出需要15个周期用于写入。
基于上面计算的访问时间,子存储器控制器214确定接下来要将哪个写入数据写入到主存储器30中。在上面的情况下,当将存储在子存储器211中的条目2中的写入数据写入到主存储器30中时,写入所需的周期的数目最小。在这种情况下,子存储器控制器214从主存储器30中的库3获得写入数据的写入目的地地址的数据,并将获得的写入数据与条目3中存储的写入数据合并。子存储器控制器214将合并数据输出到ECC生成单元216,并且ECC生成单元216生成合并数据的ECC。命令发出单元23发出将数据写入主存储器30的命令,以将条目3中存储的写入数据写入主存储器30,该数据是通过将ECC添加到合并数据而获得的。
在本实施例中,子存储器控制器214根据来自主设备的访问请求的发出状态,确定是否满足用于执行读取-修改-写入的条件。例如,当主设备未发出访问请求时,期望互连逻辑电路40不会将下一个写入请求输出到存储器控制器20。互连逻辑电路40将下一个写入请求未被发出的期望输出到存储器控制器20。在这种情况下,子存储器控制器214执行读取-修改-写入,而不等待具有相同写入目的地地址的写入请求,并且获得生成要存储在主存储器30中的ECC所需的数据。当主设备未输出访问请求时,执行读取-修改-写入可以在比合并写入数据更短的时间内完成处理。在这样的情况下,通过执行读取-修改-写入,可以抑制写入数据在子存储器211中长时间的停留。
在本实施例中,根据具有与新接收的写入请求的写入目的地地址相同的写入目的地地址的写入数据是否存储在子存储器211中,子存储器控制器214确定是否满足用于执行读取-修改-写入的条件。例如,当写入数据未存储在子存储器211中时,子存储器控制器214执行读取-修改-写入,而不等待具有相同写入目的地地址的写入请求,并获得生成存储在主存储器30中的ECC所需的数据。以这种方式,可以实现高效的存储器访问。
在本实施例中,子存储器控制器214基于存储在命令历史存储单元231中的历史,确定接下来要写入主存储器30的写入数据。例如,子存储器控制器214确定存储在子存储器211中的写入数据中的、需要最短时间完成数据写入的写入数据,作为接下来要写入到主存储器30的写入数据。以这种方式,可以根据命令的发出状态来实现高效的存储器访问。
第五实施例
接着,将描述第五实施例。图16示出了本实施例中使用的ECC控制器的配置示例。除了图2中所示的ECC控制器21的配置以外,本实施例中使用的ECC控制器21c包括写入数据检查单元219和仲裁器220。在本实施例中,ECC控制器21c可以进一步包括RMW计时器217(图10)。ECC控制器21c可以进一步包括总线状态控制器218(图14)。
当接收到新的写入请求时,写入数据检查单元219确定写入请求的写入数据中的有效数据是否是具有预定数据宽度的数据,该预定数据宽度是要存储在主存储器30中的ECC的生成单位。当确定写入数据中的有效数据的数据宽度小于预定数据宽度时,写入数据检查单元219将写入数据存储在子存储器211中。在写入数据被存储在子存储器211中之后的操作可以与第一到第四实施例中的任何一个实施例相同。
在本实施例中,如果确定写入数据中的有效数据是具有预定数据宽度的数据,那么写入数据检查单元219将写入数据输出到仲裁器220,而不将写入数据存储在子存储器211中。仲裁器220选择性地输出从子存储器控制器214输出的写入数据和从写入数据检查单元219输出的写入数据。ECC生成单元216经由仲裁器220接收从写入数据检查单元219输出的写入数据,并基于写入数据生成ECC。命令发出单元23(图2)发出将数据写入到主存储器30中的命令,该数据是通过将ECC添加到写入数据而获得的。
当确定写入数据中的有效数据是具有预定数据宽度的数据时,写入数据检查单元219查阅子存储器211,并确定具有与新接收的写入请求的写入目的地地址相同的写入目的地地址的写入数据是否存储在子存储器211中。当确定存储了具有相同目的地地址的写入数据时,写入数据检查单元219请求子存储器控制器214删除存储在子存储器211中的具有相同写入目的地地址的写入数据。子存储器控制器214从子存储器211删除具有相同写入目的地地址的写入数据。以这种方式,可以从子存储器211删除不需要的写入数据,并释放子存储器211的条目。
在本实施例中,写入数据检查单元219确定写入数据是否是ECC生成单元216能够生成ECC的数据。在本实施例中,当写入数据不包括无效数据时,并且因此可以生成要写入主存储器30的ECC,而不与其他写入数据合并时,写入数据被输出到ECC生成单元216,而不是被存储在子存储器211中。以这种方式,ECC生成单元216可以接收写入数据,而不通过子存储器211,并且可以缩短从写入请求的接收到ECC的生成和写入命令的发出所需的时间。
在上述实施例中的每个实施例中,描述了以下示例,其中使用ECC来保护存储在主存储器30和子存储器211中的数据,但本公开不限于此。可以使用用于错误检测的EDC(错误检测代码)代替用于错误检测和校正的ECC,来保护存储在主存储器30和子存储器211中的数据。备选地,可以使用ECC来保护存储在主存储器30中的数据,并且可以使用EDC来保护存储在子存储器211中的数据。在使用EDC的情况下,虽然无法执行错误校正,但是可以确定数据中是否包括错误。
虽然基于实施例具体地描述了由发明人做出的发明,但是本发明不限于已描述的实施例,并且更不必说可以在不脱离本发明主旨的情况下进行各种修改。

Claims (19)

1.一种半导体装置,包括:
第一代码生成单元,所述第一代码生成单元接收写入请求并且生成第一代码,所述第一代码用于检测与所述写入请求对应的写入数据的错误;
子存储器,所述子存储器存储所述写入数据和所述第一代码;
子存储器控制器,所述子存储器控制器确定合并数据是否具有预定数据宽度,所述合并数据是通过合并与要写入到主存储器中的相同地址中的多个写入数据中的每个写入数据对应的多个有效数据而获得的,当确定所述合并数据具有所述预定数据宽度时,所述子存储器控制器从所述子存储器读取要合并的所述多个写入数据和与所述多个写入数据中的每个写入数据对应的多个第一代码,所述子存储器控制器通过使用所述多个第一代码中的对应的第一代码来确定所述多个写入数据中的每个写入数据是否包括错误,并且当确定所述多个写入数据不包括错误时输出所述合并数据;以及
第二代码生成单元,所述第二代码生成单元生成用于检测所述合并数据的错误的第二代码,并且输出所述合并数据和与所述合并数据对应的所述第二代码,以用于所述主存储器。
2.根据权利要求1所述的半导体装置,进一步包括:
主设备,所述主设备发出包括所述写入请求的存储器访问请求;以及
存储器控制器,所述存储器控制器根据所述存储器访问请求访问所述主存储器,
其中所述存储器控制器包括:
所述第一代码生成单元;
所述子存储器,所述子存储器包括存储所述写入数据的第一子存储器和存储所述第一代码的第二子存储器;
所述子存储器控制器;
所述第二代码生成单元;
写入数据验证单元,所述写入数据验证单元基于存储在所述第二子存储器中的所述第一代码,验证存储在所述第一子存储器中的所述写入数据是否包括错误;以及
命令发出单元,所述命令发出单元发出将添加有所述第二代码的所述合并数据写入到所述主存储器中的命令。
3.根据权利要求2所述的半导体装置,
其中所述第一代码被用于校正所述写入数据中的预定比特数目的错误,并且
其中当确定所述写入数据包括错误时,所述写入数据验证单元通过使用所述第一代码来校正所述写入数据。
4.根据权利要求3所述的半导体装置,
其中当所述写入数据不能被校正时,所述写入数据验证单元输出所述写入数据包括错误的信息。
5.根据权利要求2所述的半导体装置,
其中当所述写入数据验证单元确定所述写入数据包括错误时,所述子存储器控制器执行错误处理。
6.根据权利要求2所述的半导体装置,
其中所述第一子存储器将所述写入数据存储在针对每个写入请求的单独的条目中,并且
其中当要写入到所述主存储器中的所述相同地址中的所述多个写入数据被存储在所述第一子存储器中时,所述子存储器控制器确定是否能够通过合并所述多个写入数据中的有效数据来获得具有所述预定数据宽度的数据。
7.根据权利要求2所述的半导体装置,
其中所述写入数据包括多个块,
其中根据所述写入请求,向每个块设置指示有效数据或无效数据的信息,
其中针对被设置有指示有效数据的所述信息的所述块,所述第一代码生成单元生成所述第一代码。
8.根据权利要求7所述的半导体装置,
其中所述第一子存储器将所述写入数据存储在所述第一子存储器中的针对每个写入目的地地址的单独的条目中,并且
其中当接收到所述写入请求时,
所述子存储器控制器检查是否存在存储与接收的所述写入请求的写入目的地地址相同的写入目的地地址的写入数据的条目,并且
当存在所述条目时,所述子存储器控制器用接收的所述写入请求的所述写入数据中的所述有效数据覆写与所述有效数据对应的块的数据。
9.根据权利要求2所述的半导体装置,
其中当满足预定条件时,所述子存储器控制器从所述主存储器读取与所述写入请求对应的所述写入数据的写入目的地地址的数据,并且将读取的所述数据和与所述写入请求对应的所述写入数据中的所述有效数据合并,并且
其中所述第二代码生成单元生成所述第二代码。
10.根据权利要求9所述的半导体装置,进一步包括计时器,
其中当所述计时器超时的时候,所述子存储器控制器确定所述预定条件被满足。
11.根据权利要求9所述的半导体装置,进一步包括请求监测单元,所述请求监测单元监测由所述主设备发出的存储器访问请求,
其中所述子存储器控制器根据所述主设备的存储器访问请求的发出状态来确定是否满足所述预定条件。
12.根据权利要求9所述的半导体装置,
其中当接收到所述写入请求、并且具有与接收的所述写入请求的写入目的地地址相同的写入目的地地址的写入数据未被存储在所述第一子存储器中时,所述子存储器控制器确定所述预定条件被满足。
13.根据权利要求2所述的半导体装置,
其中所述存储器控制器进一步包括命令历史存储单元,所述命令历史存储单元存储由所述命令发出单元发出的命令的历史,并且
其中所述存储器控制器基于存储在所述命令历史存储单元中的历史来确定要被写入到所述主存储器中的写入数据。
14.根据权利要求2所述的半导体装置,
其中所述存储器控制器进一步包括写入数据检查单元,所述写入数据检查单元确定所述写入数据中的所述有效数据是否是具有所述预定数据宽度的数据,并且
其中当所述写入数据检查单元确定所述写入数据中的所述有效数据是具有所述预定数据宽度的数据时,
所述写入数据不被存储在所述第一子存储器中,
所述第二代码生成单元基于所述写入数据生成所述第二代码,并且
所述命令发出单元发出将通过向所述写入数据添加所述第二数据而获得的数据写入到所述主存储器中的命令。
15.根据权利要求14所述的半导体装置,
其中当所述写入数据检查单元确定所述写入数据中的所述有效数据是具有所述预定数据宽度的数据时,所述写入数据检查单元进一步确定具有与所述写入数据的写入目的地地址相同的写入目的地地址的写入数据是否被存储在所述第一子存储器中,并且
当所述写入数据检查单元确定具有与所述写入数据的写入目的地地址相同的写入目的地地址的写入数据被存储在所述第一子存储器中时,所述写入数据检查单元请求所述子存储器控制器删除存储在所述第一子存储器中的写入数据。
16.根据权利要求2所述的半导体装置,
其中所述主设备是第一主设备,所述半导体装置进一步包括:
第二主设备,所述第二主设备发出所述存储器访问请求;以及
互连逻辑电路,所述互连逻辑电路选择性地输出由所述第一主设备发出的所述存储器访问请求和由所述第二主设备发出的所述存储器访问请求。
17.根据权利要求16所述的半导体装置,进一步包括请求监测单元,所述请求监测单元监测由所述第一主设备和所述第二主设备发出的存储器访问请求,
其中所述子存储器控制器根据由所述请求监测单元监测的存储器访问请求的发出状态,来确定所述子存储器控制器是否合并从所述第一子存储器读取的多个写入数据的有效数据,并且当所述子存储器控制器确定所述子存储器控制器不合并多个写入数据的所述有效数据时,所述子存储器控制器读取所述写入数据的写入目的地地址的数据,并且将读取的所述数据和所述写入数据中的所述有效数据合并,并且
其中所述第二代码生成单元生成第二代码。
18.一种存储器控制器,包括:
第一子存储器,所述第一子存储器存储包括在由主设备发出的写入请求中的写入数据,所述写入数据包括有效数据,所述主设备发出包括写入请求的存储器访问请求;
第一代码生成单元,所述第一代码生成单元基于存储在所述第一子存储器中的所述写入数据,生成用于检测数据错误的第一代码;
第二子存储器,所述第二子存储器存储所述第一代码;
写入数据验证单元,所述写入数据验证单元基于存储在所述第二子存储器中的所述第一代码,来验证存储在所述第一子存储器中的写入数据是否包括错误;
子存储器控制器,所述子存储器控制器管理存储在所述第一子存储器中的写入数据在主存储器中的写入目的地地址;
第二代码生成单元,所述第二代码生成单元基于以预定数据宽度为单位写入到所述主存储器中的数据,来生成用于检测数据错误的第二代码;以及
命令发出单元,所述命令发出单元发出将添加有所述第二代码的数据写入到所述主存储器中的命令,
其中当存在针对相同地址的多个写入请求时,所述子存储器控制器确定具有所述预定数据宽度的数据是否能够通过合并所述多个写入请求的写入数据中的有效数据来获得,并且当所述子存储器控制器确定能够获得具有所述预定数据宽度的数据时,所述子存储器控制器从所述第一子存储器读取要合并的多个写入数据,
其中所述写入数据验证单元通过使用与读取的所述多个写入数据中的每个写入数据对应的所述第一代码,来验证所述多个写入数据是否包括错误,
其中当所述多个写入数据不包括错误时,所述子存储器控制器合并从所述第一子存储器读取的多个写入数据中的有效数据,
其中所述第二代码生成单元生成所述第二代码,并且
其中所述命令发出单元发出将通过向合并的所述写入数据添加所述第二代码而获得的数据写入到所述主存储器中的命令。
19.一种存储器访问方法,包括:
存储包括有效数据的写入数据,所述写入数据被包括在由主设备发出的写入请求中,所述主设备发出包括写入请求的存储器访问请求;
基于存储在所述第一子存储器中的写入数据,来生成用于检测数据错误的第一代码;
在第二子存储器中存储所述第一代码;
当存在针对相同地址的多个写入请求时,确定具有预定数据的数据是否能够通过合并所述多个写入请求的写入数据中的有效数据来获得,所述预定数据是用于检测数据错误的第二代码的生成单元;
当确定能够获得具有所述预定数据的数据时,从所述第一子存储器读取要合并的多个写入数据,
基于存储在所述第二子存储器中的、与要合并的读取的所述多个写入数据中的每个写入数据对应的所述第一代码,来验证所述多个写入数据中的每个写入数据是否包括错误;
当所述多个写入数据中的每个写入数据不包括错误时,合并从所述第一子存储器读取的所述多个写入数据中的有效数据,
基于合并的所述写入数据,生成所述第二代码;以及
发出将通过向合并数据添加所述第二代码而获得的数据写入到所述主存储器中的命令。
CN201911300691.6A 2018-12-25 2019-12-17 半导体装置、存储器控制器与存储器访问方法 Active CN111382000B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2018240740A JP7184632B2 (ja) 2018-12-25 2018-12-25 半導体装置
JP2018-240740 2018-12-25

Publications (2)

Publication Number Publication Date
CN111382000A true CN111382000A (zh) 2020-07-07
CN111382000B CN111382000B (zh) 2024-01-12

Family

ID=71096848

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911300691.6A Active CN111382000B (zh) 2018-12-25 2019-12-17 半导体装置、存储器控制器与存储器访问方法

Country Status (3)

Country Link
US (1) US11221789B2 (zh)
JP (1) JP7184632B2 (zh)
CN (1) CN111382000B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2022144469A (ja) * 2021-03-19 2022-10-03 キオクシア株式会社 メモリシステム
CN117296033A (zh) * 2021-05-20 2023-12-26 美光科技公司 用于半导体装置的可调定时器组件

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232789A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd Eccパーシャルライト制御ユニット
JP2002259229A (ja) * 2001-02-28 2002-09-13 Hitachi Ltd メモリデータ誤り訂正方式
CN1841334A (zh) * 2005-03-31 2006-10-04 富士通株式会社 存储控制电路及存储控制电路中的地址错误检验方法
US20070113155A1 (en) * 2005-11-11 2007-05-17 Nec Electronics Corporation Semiconductor storage device equipped with ECC function
US20080163029A1 (en) * 2006-12-27 2008-07-03 Fujitsu Limited Error correction code generation method and memory control device
JP2009294893A (ja) * 2008-06-05 2009-12-17 Rohm Co Ltd 記憶装置及びデータ書込装置
CN102084430A (zh) * 2008-07-02 2011-06-01 美光科技公司 用于修补高容量/高带宽存储器装置的方法及设备
CN102812519A (zh) * 2010-03-22 2012-12-05 莫塞德技术公司 具有错误校正的复合半导体存储设备
US20120317340A1 (en) * 2011-06-08 2012-12-13 Hirokazu So Memory controller and non-volatile storage device
CN103136067A (zh) * 2011-11-30 2013-06-05 索尼公司 存储控制器、存储设备、信息处理系统以及存储控制方法
US20140122972A1 (en) * 2012-10-29 2014-05-01 Sony Corporation Storage control apparatus, storage apparatus, information processing system, and storage control method
US20160378595A1 (en) * 2015-06-25 2016-12-29 SK Hynix Inc. Controller, semiconductor memory system and operating method thereof
US20170063401A1 (en) * 2015-09-01 2017-03-02 International Business Machines Corporation Partial ecc mechanism for a byte-write capable register
CN107154276A (zh) * 2016-03-02 2017-09-12 瑞萨电子株式会社 半导体装置和存储器访问控制方法
US20180159558A1 (en) * 2016-12-02 2018-06-07 Samsung Electronics Co., Ltd. Error detection code generation circuits of semiconductor devices, memory controllers including the same and semiconductor memory devices including the same
US20180253354A1 (en) * 2017-03-03 2018-09-06 Fujitsu Limited Processor and control method of processor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5182752A (en) * 1990-06-29 1993-01-26 Digital Equipment Corporation Method and apparatus for transferring data between a data bus and a data storage device
JPH08190512A (ja) * 1995-01-12 1996-07-23 Hitachi Ltd データ記憶制御装置
JP2008077783A (ja) 2006-09-22 2008-04-03 Fujitsu Ltd 記憶データ処理装置、記憶装置、記憶データ処理プログラム
JP5446931B2 (ja) 2010-01-27 2014-03-19 横河電機株式会社 誤り検出訂正装置及びメモリ装置
US9842068B2 (en) * 2010-04-14 2017-12-12 Qualcomm Incorporated Methods of bus arbitration for low power memory access
JP5361826B2 (ja) 2010-08-09 2013-12-04 株式会社東芝 記録ユニット及び故障チップ特定方法
JP5453500B2 (ja) 2012-09-06 2014-03-26 エヌイーシーコンピュータテクノ株式会社 ストア制御装置、情報処理装置、および、ストア制御方法
US9110809B2 (en) * 2013-07-03 2015-08-18 Nvidia Corporation Reducing memory traffic in DRAM ECC mode
TWI668704B (zh) * 2018-10-01 2019-08-11 大陸商深圳大心電子科技有限公司 資料處理方法及使用所述方法的儲存控制器

Patent Citations (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10232789A (ja) * 1997-02-19 1998-09-02 Hitachi Ltd Eccパーシャルライト制御ユニット
JP2002259229A (ja) * 2001-02-28 2002-09-13 Hitachi Ltd メモリデータ誤り訂正方式
CN1841334A (zh) * 2005-03-31 2006-10-04 富士通株式会社 存储控制电路及存储控制电路中的地址错误检验方法
US20070113155A1 (en) * 2005-11-11 2007-05-17 Nec Electronics Corporation Semiconductor storage device equipped with ECC function
US20080163029A1 (en) * 2006-12-27 2008-07-03 Fujitsu Limited Error correction code generation method and memory control device
JP2009294893A (ja) * 2008-06-05 2009-12-17 Rohm Co Ltd 記憶装置及びデータ書込装置
CN102084430A (zh) * 2008-07-02 2011-06-01 美光科技公司 用于修补高容量/高带宽存储器装置的方法及设备
CN102812519A (zh) * 2010-03-22 2012-12-05 莫塞德技术公司 具有错误校正的复合半导体存储设备
US20120317340A1 (en) * 2011-06-08 2012-12-13 Hirokazu So Memory controller and non-volatile storage device
CN103136067A (zh) * 2011-11-30 2013-06-05 索尼公司 存储控制器、存储设备、信息处理系统以及存储控制方法
US20140122972A1 (en) * 2012-10-29 2014-05-01 Sony Corporation Storage control apparatus, storage apparatus, information processing system, and storage control method
US20160378595A1 (en) * 2015-06-25 2016-12-29 SK Hynix Inc. Controller, semiconductor memory system and operating method thereof
US20170063401A1 (en) * 2015-09-01 2017-03-02 International Business Machines Corporation Partial ecc mechanism for a byte-write capable register
CN107154276A (zh) * 2016-03-02 2017-09-12 瑞萨电子株式会社 半导体装置和存储器访问控制方法
US20180159558A1 (en) * 2016-12-02 2018-06-07 Samsung Electronics Co., Ltd. Error detection code generation circuits of semiconductor devices, memory controllers including the same and semiconductor memory devices including the same
US20180253354A1 (en) * 2017-03-03 2018-09-06 Fujitsu Limited Processor and control method of processor
JP2018147166A (ja) * 2017-03-03 2018-09-20 富士通株式会社 演算処理装置及び演算処理装置の制御方法

Also Published As

Publication number Publication date
JP7184632B2 (ja) 2022-12-06
US11221789B2 (en) 2022-01-11
CN111382000B (zh) 2024-01-12
JP2020102087A (ja) 2020-07-02
US20200201559A1 (en) 2020-06-25

Similar Documents

Publication Publication Date Title
US8732551B2 (en) Memory controller with automatic error detection and correction
TWI514139B (zh) 實體頁、邏輯頁及碼字對應
US7376877B2 (en) Combined tag and data ECC for enhanced soft error recovery from cache tag errors
US9252814B2 (en) Combined group ECC protection and subgroup parity protection
US9003260B2 (en) Partial-writes to ECC (error check code) enabled memories
US9436546B2 (en) Apparatus for error detection in memory devices
JP2021509499A (ja) メモリ・コントローラを動作させる方法、デュアル・チャネル・モードからシングル・チャネル・モードに切り替える方法、およびメモリ・コントローラ
US10606696B2 (en) Internally-generated data storage in spare memory locations
US9423972B2 (en) Error recovery in a data processing system which implements partial writes
US8140940B2 (en) Method and apparatus for controlling memory
US9191030B2 (en) Memory controller, data storage device, and memory controlling method
JP2007133986A (ja) 半導体記憶装置
JP3935885B2 (ja) 境界ワード格納機構を用いた読み取り−修正−書き込み動作を回避する方法及びシステム
CN112867993A (zh) 用于嵌入式ecc保护的方法及系统
US9665423B2 (en) End-to-end error detection and correction
CN111382000B (zh) 半导体装置、存储器控制器与存储器访问方法
US11789811B2 (en) Techniques for storing data to enhance recovery and detection of data corruption errors
US9189327B2 (en) Error-correcting code distribution for memory systems
US9329926B1 (en) Overlapping data integrity for semiconductor devices
KR20160008786A (ko) 메모리 데이터의 에러 보정 장치 및 방법
CN111880961A (zh) 用于透明寄存器数据错误检测和纠正的系统和方法
KR20060085172A (ko) 오류 검출 및 보정에 관련된 지연시간을 완화하기 위한시스템 및 방법
EP3882774A1 (en) Data processing device and data processing method
US10963344B2 (en) Information processing circuitry, information processing method, and non-transitory computer readable medium
JPH04233052A (ja) 二重化メモリ装置

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