CN105373338A - 一种flash的控制方法和控制器 - Google Patents
一种flash的控制方法和控制器 Download PDFInfo
- Publication number
- CN105373338A CN105373338A CN201410415763.2A CN201410415763A CN105373338A CN 105373338 A CN105373338 A CN 105373338A CN 201410415763 A CN201410415763 A CN 201410415763A CN 105373338 A CN105373338 A CN 105373338A
- Authority
- CN
- China
- Prior art keywords
- flash
- address
- write
- page
- 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.)
- Withdrawn
Links
Classifications
-
- 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/04—Addressing variable-length words or parts of words
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1056—Simplification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种FLASH控制器和方法,包括:地址控制单元,用于接收CPU输入的FLASH读或写命令、读或写的FLASH地址和长度、以及芯片内部buffer的地址,向FLASH命令执行单元发送读或写命令并接收FLASH命令执行单元返回的命令执行状态、或向擦除单元发送擦除命令;高速缓存,用于缓存来自内部buffer的预写入FLASH的数据、或从FLASH命令执行单元读出的数据,将从FLASH命令执行单元读出的数据发送到内部buffer、或将内部buffer的数据发送至FLASH命令执行单元;FLASH命令执行单元,用于执行地址控制单元发送的读或写命令、或执行擦除单元发送的擦除命令,并向地址控制单元返回命令执行状态;擦除单元,用于执行地址控制单元发送的擦除命令,并在擦除完成后通知地址控制单元向FLASH命令执行单元发送写命令。
Description
技术领域
本发明涉及嵌入式存储技术领域,尤其涉及一种FLASH(闪存)的控制方法和控制器。
背景技术
目前,大多数嵌入式设备,如手机和机顶盒等,都需要外部存储芯片来存储程序数据和用户数据,常见的外部存储芯片类型有安全数码卡(SD,SecureDigitalMemoryCard)、嵌入式多媒体卡(EMMC,EmbeddedMultiMediaCard)、编码型闪存NORFLASH和储存型闪存(NANDFLASH)。其中,SD卡是可热插拔的,通常用于存储用户数据;EMMC具有容量大、可实现芯片内部错误检查和纠正(ECC,ErrorCheckingandCorrecting)以及坏块管理功能等优点,但其成本较高,适用于数据量需求较大的嵌入式设备;NORFLASH读写速度快,但容量小、成本高;NANDFLASH可以做到容量高、成本低,但由于工艺问题,在出厂时或使用过程中容易产生坏块,但综合其容量和成本,NANDFLASH通常用于对存储容量要求不高的低成本嵌入式设备。
对于NANDFLASH设备,由于物理特性限制,其在读写时是以页为基本单位,在擦除时是以块为基本单位,每块由若干页组成;在每次写的过程中,需要先将当前块擦除后,才能按页写入数据,这些通常是由驱动开发者通过软件开发实现的,需要软件干预。对于NORFLASH设备,其在写之前也需要先擦除当前块,之后才能写入数据,数据读写的速度慢。
现有的NANDFLASH和NORFLASH都存在各自的优缺点,而如何进一步优化FLASH的读写流程,提升读写速度和准确度,以适应更高的应用需求,是目前亟待解决的技术问题。
发明内容
为解决现有存在的技术问题,本发明提供一种FLASH的控制方法和控制器。
本发明提供了一种闪存FLASH的控制器,包括:地址控制单元、高速缓存、擦除单元和FLASH命令执行单元,
所述地址控制单元,用于接收中央处理器CPU输入的FLASH读或写命令、FLASH的读或写地址和长度、以及芯片内部缓存buffer的地址,向所述FLASH命令执行单元发送读或写命令并接收所述FLASH命令执行单元返回的命令执行状态、或向所述擦除单元发送擦除命令;
所述高速缓存,用于缓存来自所述内部buffer的预写入FLASH的数据、或从所述FLASH命令执行单元读出的数据,将从所述FLASH命令执行单元读出的数据发送到所述内部buffer、或将所述内部buffer中预写入FLASH的数据发送至所述FLASH命令执行单元;
所述FLASH命令执行单元,用于执行所述地址控制单元发送的读或写命令、或执行所述擦除单元发送的擦除命令,并向所述地址控制单元返回命令执行状态,所述FLASH命令执行单元在执行读命令时将读出的数据发送至所述高速缓存,在执行写命令时对所述高速缓存发送的数据执行FLASH写入;
所述擦除单元,用于执行所述地址控制单元发送的擦除命令,并在擦除完成后通知所述地址控制单元向所述FLASH命令执行单元发送写命令。
上述方案中,所述地址控制单元进一步用于,将收到的所述读或写命令写入命令寄存器,将收到的所述FLASH的读或写地址写入FLASH地址寄存器,将收到的所述FLASH的读或写长度写入长度寄存器,将收到的所述内部buffer的地址写入FLASH的buffer地址寄存器。
上述方案中,所述地址控制单元进一步用于,在收到所述CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;在收到所述CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
根据所述判断结果,所述地址控制单元向所述FLASH命令执行单元发送相应命令,所述FLASH命令执行单元执行相应处理。
上述方案中,
所述地址控制单元在判断所述FLASH的读地址和长度页对齐时,按页依次发送读命令和页地址给所述FLASH命令执行单元;
所述FLASH命令执行依据所述读命令和页地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU通知所述地址控制单元将所述高速缓存中的数据发送到所述内部buffer;
所述地址控制单元在判断所述FLASH的读地址和长度页不对齐时,按页依次发送读命令、页地址和页内偏移地址给所述FLASH命令执行单元;
所述FLASH命令执行单元依据所述读命令、页地址和页内偏移地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU通知所述地址控制单元将所述高速缓存中的数据发送到所述内部buffer;所述地址控制单元还用于,依据所述页地址和页内偏移地址对所述高速缓存中的数据进行整理。
上述方案中,
所述地址控制单元进在判断所述FLASH的写地址和长度块对齐时,发送擦除一块或多块命令给所述擦除单元;
所述擦除单元在执行相应块的擦除命令后,通知所述地址控制单元向所述FLASH命令执行单元执行相应已擦除块的写命令;
所述地址控制单元按页依次发送写命令、页地址给所述FLASH命令执行单元;所述FLASH命令执行单元从所述高速缓存中读取预写入FLASH的数据,并依据所述写命令、页地址按页向所述已擦除块中写入数据,在完成每页数据写入时将执行状态发送给所述地址控制单元,并在达到所述FLASH的写长度时,向所述CPU返回写入状态;
所述地址控制单元在判断所述FLASH的写地址和长度块不对齐时,向所述FLASH命令执行单元发送读取当前块的命令;所述FLASH命令执行单元将所述当前块的数据读入到所述高速缓存;所述高速缓存根据所块内偏移地址,在所述高速缓存中合并当前块读入数据和待写入数据;所述地址控制单元发送擦除当前块的命令给所述擦除单元;所述擦除单元在执行相应块的擦除命令后,通知所述地址控制单元向所述FLASH命令执行单元执行相应已擦除块的写命令;所述FLASH命令执行单元将所述高速缓存中合并后的数据按页写入所述已擦除块中,在完成每页数据写入时将执行状态发送给所述地址控制单元,并在达到所述FLASH的写长度时,向所述CPU返回写入状态。
本发明还提供了一种闪存FLASH的控制方法,所述方法包括:
获得中央处理器CPU输入的FLASH读或写命令、FLASH的读或写地址和长度、以及内部缓存buffer的地址;
将所述FLASH的读或写地址和长度圆整到页边界,读取所述内部buffer中预写入FLASH的数据并按页写入FLASH、或按页读取所述FLASH中数据并发送到所述内部buffer。
上述方案中,所述方法进一步包括:
在获得CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;
如果页对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer;
如果页不对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,并根据偏移地址对所述高速缓存中的数据进行整理,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer。
上述方案中,所述方法进一步包括:
在完成所述读长度的FLASH读操作后,向所述CPU返回FLASH的读状态。
上述方案中,所述方法进一步包括:
在获得CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
如果块对齐,则从内部buffer读取预写入FLASH的数据到高速缓存,并在擦除FLASH中的一块或多块后,将所述高速缓存中的数据按页写入已擦除的块中;
如果块不对齐,则将当前待擦除块的数据读入到所述高速缓存,并根据块内偏移地址在所述高速缓存中合并当前待擦除块的读入数据以及待写入FLASH的数据;在对所述当前待擦除块执行擦除后,将所述高速缓存中合并后的数据按页写入所述已擦除块中。
上述方案中,所述方法进一步包括:
在完成所述写长度的FLASH写操作后,向所述CPU返回FLASH的写状态。
本发明提供的一种FLASH的控制方法和控制器,可以使用硬件实现现有技术所不能的按字节倍数的地址和长度的FLASH读写,用户可以像操作内存一样按字节读写,无需考虑块、页对齐,能够提高读写速度和准确度;本发明同时实现了写过程中的硬件自动备份和擦除,无需软件干预,可以简化FLASH读写流程,提升开发效率。本发明适用于NANDFLASH和NORFLASH等FLASH器件。
附图说明
图1为本发明实施例一的FLASH的控制方法流程图;
图2为本发明实施例二的FLASH的控制器的组成结构示意图;
图3为本发明实施例三的FLASH的控制方法流程图。
具体实施方式
下面结合附图和具体实施例对本发明的技术方案进一步详细阐述。
实施例一
本发明实施例一提供的一种FLASH的控制方法,如图1所示,主要包括:
步骤101,获得中央处理器(CPU)输入的FLASH读或写命令、FLASH的读或写地址和长度、以及芯片内部缓存(buffer)的地址;
步骤102,将所述FLASH的读或写地址和长度圆整到页边界,读取所述内部buffer中预写入FLASH的数据并按页写入FLASH、或按页读取所述FLASH中数据并发送到所述内部buffer。
具体的,在获得CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;
如果页对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer;
如果页不对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,并根据偏移地址对所述高速缓存中的数据进行整理,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer。
较佳的,在完成所述读长度的FLASH读操作后,向所述CPU返回FLASH的读状态。
在获得CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
如果块对齐,则从内部buffer读取预写入FLASH的数据到高速缓存,并在擦除FLASH中的一块或多块后,将所述高速缓存中的数据按页写入已擦除的块中;
如果块不对齐,则将当前待擦除块的数据读入到所述高速缓存,并根据块内偏移地址在所述高速缓存中合并当前待擦除块的读入数据以及待写入FLASH的数据;在对所述当前待擦除块执行擦除后,将所述高速缓存中合并后的数据按页写入所述已擦除块中。
较佳的,在完成所述写长度的FLASH写操作后,向所述CPU返回FLASH的写状态。
本发明实施例所述的芯片内部buffer可以是双倍速率(DDR,DoubleDataRatebuffer)存储器或随机存储器(RAM,RandomAccessMemory)。
通过本发明实施例一,可以使用硬件实现按字节倍数的地址和长度的FLASH读写,无需按页长度对齐,同时实现写过程中的硬件自动备份和擦除,无需软件干预;本发明实施例可以简化FLASH读写流程,提升开发效率,提升读写速度和准确度。
实施例二
本发明实施例二提供一种FLASH的控制器,如图2所示,所述控制器包括:地址控制单元10、高速缓存(cache)20、擦除单元40和FLASH命令执行单元30,其中,
地址控制单元10,用于接收CPU输入的FLASH读或写命令、FLASH的读或写地址和长度、以及内部buffer的地址,向所述FLASH命令执行单元30发送读或写命令并接收所述FLASH命令执行单元30返回的命令执行状态、或向所述擦除单元发送擦除命令;
高速缓存20,用于缓存来自所述内部buffer的预写入FLASH的数据、或从所述FLASH命令执行单元30读出的数据,将从所述FLASH命令执行单元30读出的数据发送到所述内部buffer、或将所述内部buffer中预写入FLASH的数据发送至所述FLASH命令执行单元30;
FLASH命令执行单元30,用于执行所述地址控制单元10发送的读或写命令、或执行所述擦除单元40发送的擦除命令,并向所述地址控制单元10返回命令执行状态,所述FLASH命令执行单元30在执行读命令时将读出的数据发送至所述高速缓存20,在执行写命令时对所述高速缓存20发送的数据执行FLASH写入;FLASH命令执行单元30还用于执行获取ID命令、复位命令等;
擦除单元40,用于执行所述地址控制单元发送的擦除命令,并在擦除完成后通知地址控制单元10向所述FLASH命令执行单元发送写命令。
较佳的,地址控制单元10进一步用于,将收到的所述读或写命令写入命令寄存器,将收到的所述FLASH的读或写地址写入FLASH地址寄存器,将收到的所述FLASH的读或写长度写入长度寄存器,将收到的所述内部buffer的地址写入FLASH的buffer地址寄存器。
较佳的,地址控制单元10进一步用于,在收到所述CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;在收到所述CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
根据所述判断结果,所述地址控制单元10向所述FLASH命令执行单元30发送相应命令,所述FLASH命令执行单元30执行相应处理。
较佳的,地址控制单元10在判断所述FLASH的读地址和长度页对齐时,按页依次发送读命令和页地址给所述FLASH命令执行单元30;
FLASH命令执行单元30依据所述读命令和页地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU将所述高速缓存中的数据发送到所述内部buffer;CPU在收到通知后,可以通过地址控制单元10向高速缓存发送命令,指示高速缓存将其中的数据发送到所述内部buffer;
所述地址控制单元10在判断所述FLASH的读地址和长度页不对齐时,按页依次发送读命令、页地址和页内偏移地址给所述FLASH命令执行单元30;
FLASH命令执行单元30依据所述读命令、页地址和页内偏移地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元10,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU将所述高速缓存中的数据发送到所述内部buffer;所述地址控制单元10还用于,依据所述页地址和页内偏移地址对所述高速缓存中的数据进行整理。CPU在收到通知后,可以通过地址控制单元10向高速缓存发送命令,指示高速缓存将其中的数据发送到所述内部buffer。
达到FLASH的读长度或高速缓存满时,FLASH命令执行单元30会通过状态线向CPU返回状态,CPU通知地址控制单元10将数据从高速缓存发送到内部buffer,由于地址控制单元10和高速缓存在一个控制器逻辑范围内,命令操作会比较方便,能够简化操作流程。
较佳的,地址控制单元10在判断所述FLASH的写地址和长度块对齐时,发送擦除一块或多块命令给所述擦除单元40;
擦除单元40在执行相应块的擦除命令后,通知地址控制单元10向所述FLASH命令执行单元30执行相应已擦除块的写命令;
地址控制单元10按页依次发送写命令、页地址给所述FLASH命令执行单元30;所述FLASH命令执行单元30从所述高速缓存20中读取预写入FLASH的数据,并依据所述写命令、页地址按页向所述已擦除块中写入数据,在完成每页数据写入时将执行状态发送给所述地址控制单元10,并在达到所述FLASH的写长度时,向所述CPU返回写入状态;
所述地址控制单元10在判断所述FLASH的写地址和长度块不对齐时,向所述FLASH命令执行单元30发送读取当前块的命令;所述FLASH命令执行单元30将所述当前块的数据读入到所述高速缓存20;所述高速缓存20根据所块内偏移地址,在所述高速缓存20中合并当前块读入数据和待写入数据;所述地址控制单元10发送擦除当前块的命令给所述擦除单元40;所述擦除单元40在执行相应块的擦除命令后,通知地址控制单元10向所述FLASH命令执行单元30执行相应已擦除块的写命令;所述FLASH命令执行单元30将所述高速缓存中合并后的数据按页写入所述已擦除块中,在完成每页数据写入时将执行状态发送给所述地址控制单元10,并在达到所述FLASH的写长度时,向所述CPU返回写入状态。
本发明实施例二可以实现按字节读写FLASH,在读时,由硬件自动读取数据,并将用户所选的有效数据发送给用户buffer;在写时,若块对齐,则根据长度擦除一块或多块后自动逐页写入,若不是块对齐,则由硬件完成自动擦除一块,备份一块并写入一块。通过本发明实施例二,可以简化开发者流程,用户可以像操作内存一样按字节读写,无需考虑块、页对齐,可以提高读写准确率。
下面再结合图2所示的FLASH的控制器结构,对本发明实施例的FLASH的控制方法进一步详细阐述。
实施例三
本发明实施例三的FLASH的控制方法,如图3所示,主要包括:
步骤301,用户编程操作CPU向控制器的地址控制单元发送读或写的命令,同时发送读或写的起始地址和长度,以及读或写的用户buffer地址,上述实现通过CPU将相应命令值和地址长度数值写入地址控制单元的相应寄存器来实现。
步骤302,地址控制单元判断是读命令还是写命令,如果是读命令,转入步骤303b;如果是写命令,转入步骤303a。
步骤303b,判断读起始地址和读长度是否页对齐,如对齐,执行步骤304b;否则,执行步骤305b。
步骤304b,读流程中,若读地址长度页对齐,则地址控制单元将按页循环发送读命令、读页地址给FLASH命令执行单元,FLASH命令执行单元按页读取数据送入cache,达到读长度或cache满时,FLASH命令执行单元通知CPU将数据主动发送给用户buffer;若未完成读取,则继续循环读数据,完成每页读取后,将状态发送给地址控制单元,使其发送下一命令。
步骤305b,读流程中,若读地址长度页不对齐,则地址控制单元将按页地址方式循环发送读命令,将页地址和页内偏移地址发送给FLASH命令执行单元,FLASH命令执行单元按页读取数据到cache;地址控制单元根据用户输入的偏移地址和长度对cache内数据进行整理,得到有效数据;当达到读长度或cache满时,FLASH命令执行单元通知CPU将有效数据主动发送给用户buffer;若未完成读取,则继续循环按页读数据,完成每页读取后,将状态发送给地址控制单元,使其发送下一命令。
步骤306b,当达到读长度时,FLASH命令执行单元通知CPU读状态,返回读成功或读失败。
步骤303a,判断写起始地址和写长度是否页对齐,如对齐,执行步骤304a;否则,执行步骤306a。
步骤304a~305a,写流程中,若写地址长度块对齐,则地址控制单元先发送擦除一块或多块命令给擦除单元,然后cache主动从用户buffer取数据,地址控制单元将按页地址循环发送写命令,FLASH命令执行单元按页进行数据写入;若写长度是多块,则重复步骤304a~305a。执行完后转到步骤309a。
步骤306a~308a,写流程中,若写地址长度不是块对齐,则地址控制单元根据块地址先发送读命令;FLASH命令执行单元读取当前整块数据到cache中;然后根据块内偏移,cache中合并读数据和待写入的用户数据;然后擦除当前块,再将cache中的数据写入当前块;若写长度是多块,则重复步骤306a~308a。执行完后转到步骤309a。
步骤309a,当达到写长度时,FLASH命令执行单元通知CPU写状态,返回写成功或写失败状态。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质包括一组计算机可执行指令,所述指令用于执行本发明实施例所述的FLASH的控制方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种闪存FLASH的控制器,其特征在于,包括:地址控制单元、高速缓存、擦除单元和FLASH命令执行单元,
所述地址控制单元,用于接收中央处理器CPU输入的FLASH读或写命令、FLASH的读或写地址和长度、以及芯片内部缓存buffer的地址,向所述FLASH命令执行单元发送读或写命令并接收所述FLASH命令执行单元返回的命令执行状态、或向所述擦除单元发送擦除命令;
所述高速缓存,用于缓存来自所述内部buffer的预写入FLASH的数据、或从所述FLASH命令执行单元读出的数据,将从所述FLASH命令执行单元读出的数据发送到所述内部buffer、或将所述内部buffer中预写入FLASH的数据发送至所述FLASH命令执行单元;
所述FLASH命令执行单元,用于执行所述地址控制单元发送的读或写命令、或执行所述擦除单元发送的擦除命令,并向所述地址控制单元返回命令执行状态,所述FLASH命令执行单元在执行读命令时将读出的数据发送至所述高速缓存,在执行写命令时对所述高速缓存发送的数据执行FLASH写入;
所述擦除单元,用于执行所述地址控制单元发送的擦除命令,并在擦除完成后通知所述地址控制单元向所述FLASH命令执行单元发送写命令。
2.根据权利要求1所述FLASH的控制器,其特征在于,所述地址控制单元进一步用于,将收到的所述读或写命令写入命令寄存器,将收到的所述FLASH的读或写地址写入FLASH地址寄存器,将收到的所述FLASH的读或写长度写入长度寄存器,将收到的所述内部buffer的地址写入FLASH的buffer地址寄存器。
3.根据权利要求1或2所述FLASH的控制器,其特征在于,所述地址控制单元进一步用于,在收到所述CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;在收到所述CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
根据所述判断结果,所述地址控制单元向所述FLASH命令执行单元发送相应命令,所述FLASH命令执行单元执行相应处理。
4.根据权利要求3所述FLASH的控制器,其特征在于,
所述地址控制单元在判断所述FLASH的读地址和长度页对齐时,按页依次发送读命令和页地址给所述FLASH命令执行单元;
所述FLASH命令执行依据所述读命令和页地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU通知所述地址控制单元将所述高速缓存中的数据发送到所述内部buffer;
所述地址控制单元在判断所述FLASH的读地址和长度页不对齐时,按页依次发送读命令、页地址和页内偏移地址给所述FLASH命令执行单元;
所述FLASH命令执行单元依据所述读命令、页地址和页内偏移地址按页读取数据并送入所述高速缓存,在完成每页数据读取时将执行状态发送给所述地址控制单元,并在达到所述FLASH的读长度或所述高速缓存满时,通知所述CPU通知所述地址控制单元将所述高速缓存中的数据发送到所述内部buffer;所述地址控制单元还用于,依据所述页地址和页内偏移地址对所述高速缓存中的数据进行整理。
5.根据权利要求3所述FLASH的控制器,其特征在于,
所述地址控制单元进在判断所述FLASH的写地址和长度块对齐时,发送擦除一块或多块命令给所述擦除单元;
所述擦除单元在执行相应块的擦除命令后,通知所述地址控制单元向所述FLASH命令执行单元执行相应已擦除块的写命令;
所述地址控制单元按页依次发送写命令、页地址给所述FLASH命令执行单元;所述FLASH命令执行单元从所述高速缓存中读取预写入FLASH的数据,并依据所述写命令、页地址按页向所述已擦除块中写入数据,在完成每页数据写入时将执行状态发送给所述地址控制单元,并在达到所述FLASH的写长度时,向所述CPU返回写入状态;
所述地址控制单元在判断所述FLASH的写地址和长度块不对齐时,向所述FLASH命令执行单元发送读取当前块的命令;所述FLASH命令执行单元将所述当前块的数据读入到所述高速缓存;所述高速缓存根据所块内偏移地址,在所述高速缓存中合并当前块读入数据和待写入数据;所述地址控制单元发送擦除当前块的命令给所述擦除单元;所述擦除单元在执行相应块的擦除命令后,通知所述地址控制单元向所述FLASH命令执行单元执行相应已擦除块的写命令;所述FLASH命令执行单元将所述高速缓存中合并后的数据按页写入所述已擦除块中,在完成每页数据写入时将执行状态发送给所述地址控制单元,并在达到所述FLASH的写长度时,向所述CPU返回写入状态。
6.一种闪存FLASH的控制方法,其特征在于,所述方法包括:
获得中央处理器CPU输入的FLASH读或写命令、FLASH的读或写地址和长度、以及内部缓存buffer的地址;
将所述FLASH的读或写地址和长度圆整到页边界,读取所述内部buffer中预写入FLASH的数据并按页写入FLASH、或按页读取所述FLASH中数据并发送到所述内部buffer。
7.根据权利要求6所述FLASH的控制方法,其特征在于,所述方法进一步包括:
在获得CPU输入的FLASH读命令、FLASH的读地址和长度、以及内部buffer的地址时,判断所述FLASH的读地址和长度是否页对齐;
如果页对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer;
如果页不对齐,则依据所述FLASH的读地址和长度,从所述FLASH中按页读取数据并发送到高速缓存,并根据偏移地址对所述高速缓存中的数据进行整理,待达到所述FLASH的读长度或所述高速缓存满时,将所述高速缓存中的数据发送到所述内部buffer。
8.根据权利要求7所述FLASH的控制方法,其特征在于,所述方法进一步包括:
在完成所述读长度的FLASH读操作后,向所述CPU返回FLASH的读状态。
9.根据权利要求6所述FLASH的控制方法,其特征在于,所述方法进一步包括:
在获得CPU输入的FLASH写命令、FLASH的写地址和长度、以及内部buffer的地址时,判断所述FLASH的写地址和长度是否块对齐;
如果块对齐,则从内部buffer读取预写入FLASH的数据到高速缓存,并在擦除FLASH中的一块或多块后,将所述高速缓存中的数据按页写入已擦除的块中;
如果块不对齐,则将当前待擦除块的数据读入到所述高速缓存,并根据块内偏移地址在所述高速缓存中合并当前待擦除块的读入数据以及待写入FLASH的数据;在对所述当前待擦除块执行擦除后,将所述高速缓存中合并后的数据按页写入所述已擦除块中。
10.根据权利要求9所述FLASH的控制方法,其特征在于,所述方法进一步包括:
在完成所述写长度的FLASH写操作后,向所述CPU返回FLASH的写状态。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415763.2A CN105373338A (zh) | 2014-08-20 | 2014-08-20 | 一种flash的控制方法和控制器 |
PCT/CN2014/093473 WO2015117493A1 (zh) | 2014-08-20 | 2014-12-10 | 一种flash的控制方法和控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410415763.2A CN105373338A (zh) | 2014-08-20 | 2014-08-20 | 一种flash的控制方法和控制器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105373338A true CN105373338A (zh) | 2016-03-02 |
Family
ID=53777299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410415763.2A Withdrawn CN105373338A (zh) | 2014-08-20 | 2014-08-20 | 一种flash的控制方法和控制器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105373338A (zh) |
WO (1) | WO2015117493A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106776373A (zh) * | 2017-01-12 | 2017-05-31 | 合肥杰美电子科技有限公司 | 一种面向移动设备的基于闪存的高速缓存系统及方法 |
CN106802870A (zh) * | 2016-12-29 | 2017-06-06 | 杭州朔天科技有限公司 | 一种高效的嵌入式系统芯片Nor‑Flash控制器及控制方法 |
CN107562567A (zh) * | 2016-06-30 | 2018-01-09 | 华为技术有限公司 | 一种数据处理方法以及数据处理设备 |
CN107632793A (zh) * | 2017-10-13 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种用于ssd后端的数据流管控方法 |
CN108536614A (zh) * | 2018-03-30 | 2018-09-14 | 天津麒麟信息技术有限公司 | 一种Flash直接随机写实现方法、装置及存储介质 |
CN108845764A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种io数据的处理方法及装置 |
CN109445686A (zh) * | 2018-09-28 | 2019-03-08 | 方信息科技(上海)有限公司 | 一种存储磁盘以及存取数据的方法 |
CN112148366A (zh) * | 2020-09-14 | 2020-12-29 | 上海华虹集成电路有限责任公司 | 一种芯片降低功耗提升性能的flash加速方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169553A1 (en) * | 2008-12-27 | 2010-07-01 | Kabushiki Kaisha Toshiba | Memory system, controller, and method of controlling memory system |
CN101794257A (zh) * | 2009-12-22 | 2010-08-04 | 深圳市硅格半导体有限公司 | 资料储存型闪存的数据更新方法及装置、存储设备 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
-
2014
- 2014-08-20 CN CN201410415763.2A patent/CN105373338A/zh not_active Withdrawn
- 2014-12-10 WO PCT/CN2014/093473 patent/WO2015117493A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169553A1 (en) * | 2008-12-27 | 2010-07-01 | Kabushiki Kaisha Toshiba | Memory system, controller, and method of controlling memory system |
CN101794257A (zh) * | 2009-12-22 | 2010-08-04 | 深圳市硅格半导体有限公司 | 资料储存型闪存的数据更新方法及装置、存储设备 |
CN101819509A (zh) * | 2010-04-19 | 2010-09-01 | 清华大学深圳研究生院 | 一种固态硬盘读写方法 |
CN103425602A (zh) * | 2013-08-15 | 2013-12-04 | 深圳市江波龙电子有限公司 | 一种闪存存储设备数据读写的方法、装置及主机系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562567A (zh) * | 2016-06-30 | 2018-01-09 | 华为技术有限公司 | 一种数据处理方法以及数据处理设备 |
CN106802870A (zh) * | 2016-12-29 | 2017-06-06 | 杭州朔天科技有限公司 | 一种高效的嵌入式系统芯片Nor‑Flash控制器及控制方法 |
CN106776373A (zh) * | 2017-01-12 | 2017-05-31 | 合肥杰美电子科技有限公司 | 一种面向移动设备的基于闪存的高速缓存系统及方法 |
CN106776373B (zh) * | 2017-01-12 | 2020-10-16 | 合肥速显微电子科技有限公司 | 一种面向移动设备的基于闪存的高速缓存系统及方法 |
CN107632793A (zh) * | 2017-10-13 | 2018-01-26 | 郑州云海信息技术有限公司 | 一种用于ssd后端的数据流管控方法 |
CN107632793B (zh) * | 2017-10-13 | 2020-07-28 | 苏州浪潮智能科技有限公司 | 一种用于ssd后端的数据流管控方法 |
CN108536614A (zh) * | 2018-03-30 | 2018-09-14 | 天津麒麟信息技术有限公司 | 一种Flash直接随机写实现方法、装置及存储介质 |
CN108845764A (zh) * | 2018-05-30 | 2018-11-20 | 郑州云海信息技术有限公司 | 一种io数据的处理方法及装置 |
CN109445686A (zh) * | 2018-09-28 | 2019-03-08 | 方信息科技(上海)有限公司 | 一种存储磁盘以及存取数据的方法 |
CN109445686B (zh) * | 2018-09-28 | 2020-11-17 | 方一信息科技(上海)有限公司 | 一种存储磁盘以及存取数据的方法 |
CN112148366A (zh) * | 2020-09-14 | 2020-12-29 | 上海华虹集成电路有限责任公司 | 一种芯片降低功耗提升性能的flash加速方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2015117493A1 (zh) | 2015-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373338A (zh) | 一种flash的控制方法和控制器 | |
US8392649B2 (en) | Memory storage device, controller, and method for responding to host write commands triggering data movement | |
US8812784B2 (en) | Command executing method, memory controller and memory storage apparatus | |
TWI409633B (zh) | 快閃記憶體儲存裝置、其控制器與資料寫入方法 | |
US9043536B2 (en) | Method of recording mapping information, and memory controller and memory storage apparatus using the same | |
US10599345B2 (en) | Memory device that writes data into a block based on time passage since erasure of data from the block | |
CN106067321A (zh) | 适于存储器编程暂停-恢复的控制器 | |
KR102114109B1 (ko) | 데이터 저장 장치 | |
US8667209B2 (en) | Non-volatile memory access method and system, and non-volatile memory controller | |
CN105593942A (zh) | 非易失性存储器装置中的易失性存储器架构及相关控制器 | |
US20200089566A1 (en) | Apparatus for diagnosing memory system and operating method thereof | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
US9037781B2 (en) | Method for managing buffer memory, memory controllor, and memory storage device | |
CN102955751A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN113760185A (zh) | 内存块回收方法和装置 | |
KR20160074025A (ko) | 데이터 저장 장치의 동작 방법 | |
CN111435291A (zh) | 用于擦除非易失性存储器块中编程的数据的装置和方法 | |
CN104205229A (zh) | 功率损耗恢复中的固态驱动器管理 | |
CN105389268A (zh) | 资料储存系统及其运作方法 | |
CN110727470B (zh) | 一种混合式非失性存储装置 | |
KR20180089742A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US11347433B2 (en) | Method for performing sudden power off recovery management, associated memory device and controller thereof, and associated electronic device | |
KR20210080967A (ko) | 컨트롤러 및 컨트롤러의 동작방법 | |
CN105653468B (zh) | 一种使用mram的存储设备 | |
US20170229187A1 (en) | Flash memory counter |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20160302 |