CN102568570B - 基于sd接口使用环形队列快速写闪存介质的方法 - Google Patents

基于sd接口使用环形队列快速写闪存介质的方法 Download PDF

Info

Publication number
CN102568570B
CN102568570B CN201010576747.3A CN201010576747A CN102568570B CN 102568570 B CN102568570 B CN 102568570B CN 201010576747 A CN201010576747 A CN 201010576747A CN 102568570 B CN102568570 B CN 102568570B
Authority
CN
China
Prior art keywords
data
circle queue
address
interface
flash
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201010576747.3A
Other languages
English (en)
Other versions
CN102568570A (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.)
Shanghai Huahong Integrated Circuit Co Ltd
Original Assignee
Shanghai Huahong Integrated Circuit 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 Shanghai Huahong Integrated Circuit Co Ltd filed Critical Shanghai Huahong Integrated Circuit Co Ltd
Priority to CN201010576747.3A priority Critical patent/CN102568570B/zh
Publication of CN102568570A publication Critical patent/CN102568570A/zh
Application granted granted Critical
Publication of CN102568570B publication Critical patent/CN102568570B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Abstract

本发明公开了一种基于SD接口使用环形队列快速写闪存介质的方法,包括步骤:(1)建立环形队列,并设置环形队列地址;(2)在接收到写命令前,接收数据数目已默认设置为1,然后接收SD写命令和第一包SD数据;(3)处理临时碎片块中的残留数据记录;(4)重新设置本次接收数据数目,继续接收SD数据;(5)闪存换块处理并重新控制SD数据接收和闪存编程。本发明可以减少闪存的数据搬移次数,避免产生大量碎片,提高SD卡速读写速度。

Description

基于SD接口使用环形队列快速写闪存介质的方法
技术领域
本发明涉及一种通过SD卡(SecureDigitalMemoryCard)接口对闪存的操作方法,特别是涉及一种基于SD接口使用环形队列快速写闪存介质的方法。
背景技术
SD卡的技术是基于Multi-Media卡(MMC)格式上发展而来。SD卡共支持三种传输模式:SPI模式,1位SD模式,4位SD模式。低速卡通常支持0~400Kbit/s数据传输率,采用SPI和1位SD传输模式。高速卡支持0~100Mbit/s数据传输率,采用4位SD传输模式。随着SD卡传输速率的提高,理论上SD卡的读写速度可以达到25Mbyte/s。
在现有的技术中,闪存的上层操作是通过逻辑地址访问闪存,并认为闪存是一个逻辑地址连续分布的物理存储介质,而SD卡的固化软件则通过物理地址来实际访问闪存中的块。所以SD卡的固化软件中建立了一个逻辑地址到物理地址的对应表,即地址对照表。SD卡在接收到SDHost的写命令时,其固化软件先解析所述写命令的逻辑地址,并寻找一个物理地址来对应这个逻辑地址,即在地址对照表中建立该逻辑地址与改物理地址的对应关系。由于闪存的物理块只能对空块编程且必须顺序写,且只能按页编程,按块擦除。如果直接对逻辑地址对应的物理地址编程,则需要更多的擦除和搬移数据的工作。所以建立若干临时逻辑块,与部分逻辑地址对应。固化软件寻找与该逻辑块对应的临时逻辑块,如果不存在,则按照一定的原则,选择一个临时逻辑块和其对应的物理块整理合并,形成空块,映射到新的逻辑块,即形成与该逻辑地址对应的临时逻辑块。如果存在则直接对临时逻辑块编程,并记录逻辑页和物理页对应关系。遇到临时逻辑块写满时,就将该临时逻辑块,和对应的物理块进行整理。保存新的映射关系,并更新出新的临时逻辑块。临时逻辑块写满时,如果临时逻辑块的页记录连续,整理只需要建立临时逻辑块和逻辑地址之间的映射,并将原物理块更新为临时逻辑块,整理比较简单。如果临时逻辑块的页记录不连续,需要将临时逻辑块和物理块之间的记录进行合并整理,形成新的逻辑块,并建立其和逻辑地址之间的映射关系。
发明内容
本发明要解决的技术问题是提供一种基于SD接口使用环形队列快速写闪存介质的方法。该方法通过将SD传输数据和对闪存编程同时进行,并且环形队列使闪存数据尽量连续,减少闪存的数据搬移次数,避免产生大量碎片。
为解决上述技术问题,本发明的基于SD接口使用环形队列快速写闪存介质的方法,包括步骤:
(1)建立环形队列,并设置环形队列地址;
其中,环形队列地址包括:环形队列起始地址、环形队列结束地址、当前接收数据地址、当前写闪存数据起始地址;
通过当前接收数据地址和当前写闪存数据起始地址控制接收SD数据和对闪存编程;其中,每收到1包SD数据,当前接收数据地址向后移动1个单位(1个SDblock大小),本次最大能处理的数据数目也相应减1;已接收数据数目(当前接收数据地址和当前写闪存数据起始地址之间的缓存数目)每满一个闪存页,则对闪存编程,在编程成功后,当前写闪存数据起始地址向后移动闪存页大小(N)个单位(每闪存页包含的SDblock数目,下文中均记为N);
(2)在接收到写命令前,接收数据数目已默认设置为1,然后接收SD写命令和第一包SD数据;
(3)处理临时碎片块中的残留数据记录;
其中,临时碎片块保存一次SD接口写操作结束时不满一个闪存页的记录,每个逻辑块最多只有一个这样的记录,如果该临时碎片块中包含有该逻辑块的记录,将该数据读出到环形队列中(位置在第一包数据的前面),在写操作时判断写数据的起始逻辑地址和临时碎片块中记录的数据结束地址是否连续,做相应处理:当连续时,将环形队列中的数据和本次写数据拼接,保持地址连续;当不连续时,则将不满闪存页记录写入该临时逻辑块中;
(4)重新设置本次接收数据数目,继续接收SD数据;
在处理完临时碎片块中记录和接收完第一包SD数据后,重新设置接收数据数目;如果临时碎片块中记录和本次写数据地址连续,在临时碎片块中数据读出到环形队列中和接收完第一包SD数据后,环形队列中空闲的缓存数目将减少;
所述本次接收数据数目设置为环形队列中空闲缓存的数目和本次最大能处理的数据数目两者中较小的一个;如果在此期间接收到SD写结束命令,则停止接收数据,并在编程结束后退出;若有环形队列中残留数据不满一页,则记录残留数据的逻辑地址和长度;而本次接收数据数目在闪存编程成功后会重新设置,其值会加上闪存页大小N和本次最大能处理的数据数目中较小的一个;
(5)闪存换块处理并重新控制SD数据接收和闪存编程。
其中,如果闪存读写遇到逻辑换块或者物理换块,则停止数据接收,并更新逻辑和物理地址映射关系,并将其保存在闪存介质中,重新计算最大能处理的数据数目后,继续接收数据;在接收到写结束命令后,设置接收数据数目默认值为1。
上述步骤(2)、(4)、(5)中,SD数据接口和环形队列之间,环形队列和闪存之间的数据传输是通过DMA(DirectMemoryAccess,直接内存访问)方式完成的,这使SD数据接口和环形队列之间、环形队列和闪存之间能够并行操作,提高数据传输的速率。
本发明的方法是通过采用内嵌式软件(即固化软件)实现。为此,适用于本发明的SD卡至少应具备控制芯片和闪存芯片,其中,控制芯片包括固化软件。由于使用环形队列接收数据,所以控制芯片必须具备额外的RAM(randomaccessmemory,随机存储器),对环形队列的初始化仅在SD卡上电初始化时进行一次。
本发明以闪存块页结合的映射方式为基础,是一种提高SD卡速读写速度的方法,该方法使SD接口接收数据和对闪存编程并行工作。环形队列在物理上是一块地址连续的内存空间。本发明通过对环形队列地址的控制,预先完成闪存逻辑物理地址转换,并接收SD接口数据,同时完成对闪存的编程,在确认成功后释放队列。
在接收到SD写结束命令后,如果环形队列中的数据不满闪存的页大小,数据将保留在环形队列中,或者写入临时碎片块,如果其逻辑地址与下次写SD卡的逻辑地址连续,则可以通过控制环形队列的指针,达到闪存按页连续写的效果,避免产生大量碎片。
附图说明
下面结合附图与具体实施方式对本发明作进一步详细的说明:
图1是本发明利用环形队列写闪存的总体流程图;
图2是本发明处理残留数据的流程图。
具体实施方式
以下实施例中的SD卡,包括SD卡控制芯片和闪存芯片,其中,控制芯片包括固化软件,控制芯片还具备额外的RAM。
本实施例的基于SD接口使用环形队列快速写闪存介质的方法,如图1所示,具体步骤包括:
上电初始化,初始化等待接收SD写数据的环形队列,设置环形队列起始地址和环形队列结束地址。其中,环形队列包括若干个数据缓存,根据闪存的页大小而定。
由于SD卡在接收到写命令后,第一包数据必须立刻接收。在接收到SDHOST的写命令后,固化软件还未计算本次最大能处理的数据数目,本实施方案提出:
在接收到SDHOST的写命令前已经设置好当前接收数据地址、当前写闪存数据起始地址和本次接收数据数目。
步骤S10,设置当前接收数据地址和当前写闪存数据起始地址。
步骤S11,设置本次接收数据数目为1,并使能接收数据。
步骤S12,在接收到写命令和第一包数据后即停止接收数据(SDDATAO线设置成忙状态)。查询到逻辑地址对应的临时逻辑块后,判断临时碎片块中是否包含本逻辑块中的临时记录,临时碎片块是用于保存一次SD接口写操作结束时不满一个闪存页的记录,每个临时逻辑块最多只有一个这样的记录,本次写临时逻辑块时会将上次的碎片块中的记录写入临时逻辑块。
步骤S13,处理当前临时逻辑块的残余记录,具体流程见图2:
步骤S20,判断临时碎片块中是否包含本逻辑块中的临时记录;如果包含,则按照步骤S21操作;如果不包含,则接收数据,执行数据操作;
步骤S21,从临时碎片块读出临时记录到环形队列;
步骤S22,根据本逻辑块的临时记录的地址信息,判断本次写数据的逻辑地址和残留在环形队列中的数据结束地址是否连续;
步骤S23,如果不连续,则将残留在环形队列中的数据写入该临时逻辑块中,并记录逻辑页和物理页对应关系,重新设置当前写闪存数据起始地址;
步骤S24,如果连续,则将残留在环形队列中的数据和第一包数据拼接,重新设置当前写闪存数据起始地址;
在处理完残留数据后,需要重新计算本次最大能处理的数据数目,计算方法较关键,即步骤S14。SD在写临时逻辑块的过程中会遇到闪存逻辑换块或者物理换块的情况。逻辑换块,即临时逻辑块写到最后一页,需要更新。物理换块,即写到逻辑块对应物理块的最后一页,需要更新映射关系。
步骤S15,设置本次接收数据数目。本次能写的扇区的最大数目为距离逻辑换块和物理换块,还能写的扇区数。本次接收数据数目设置为环形队列中空闲缓存的数目和本次最大能处理的数据数目两者中较小的一个。
步骤S16,接收数据,并操作环形队列地址。每接收到1包SD数据,当前接收数据地址所指向的缓存地址向后移动一个单位(1个SDblock大小),若遇到队列结束,其后的指向记为起始地址。这样就形成了环形队列。本次接收数据数目和本次最大能处理的数据数目均减一。
步骤S17,如果在写的过程中收到写结束命令,则将环形队列中满页的数据编程到闪存中,不对不满一页的残留数据,仅记下其逻辑地址和长度。在一定时间内不对SD卡操作则将该不满页记录写入临时碎片块。在下次写该逻辑块时按照步骤S20中的方法对其处理。这样处理主要是尽量保持临时逻辑块的编程尽量物理连续。
步骤S18,如果没有收到写结束命令,在接收SD数据的同时,当环形队列中的数据数目满一个闪存页(计算方法为当前接收数据地址和当前写闪存数据起始地址之间的缓存数目),则对闪存编程。在编程确认成功后,将当前写闪存数据起始地址向后移动N(闪存页大小)个单位。重新设置本次接收数据数目,如果此时本次最大能处理的数据数目不小于N,由于队列中空闲缓存的增加,本次接收数据数目加上N;如果本次最大能处理的数据数目小于N,本次接收数据数目加上本次最大能处理的数据数目。直到两者同时减为0。
步骤S19,如果SDHOST继续写操作,则执行逻辑换块或者物理换块。设置SDDATAO线设置成忙状态,固化软件对当前页编程结束后,将对该临时逻辑块和及其对应的物理块进行整理。如果是物理换块,则重新分配新的临时逻辑块。如果是逻辑换块,则重新计算新的逻辑块对应的物理块地址,分配对应的新临时逻辑块。然后按照步骤S14,设置新的本次接收数据数目和本次最大能处理的数据数目,重新使能接收SD数据和编程。
按照上述步骤进行操作,能提高SD卡速读写速度,而且能避免产生大量碎片。

Claims (9)

1.一种基于SD接口使用环形队列快速写闪存介质的方法,包括步骤:
(1)建立环形队列,并设置环形队列地址;
(2)在接收到写命令前,接收数据数目已默认设置为1,然后接收SD写命令和第一包SD数据;
(3)处理临时碎片块中的残留数据记录;
(4)重新设置本次接收数据数目,继续接收SD数据;
(5)闪存换块处理并重新控制SD数据接收和闪存编程。
2.如权利要求1所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(1)中,环形队列地址包括:环形队列起始地址、环形队列结束地址、当前接收数据地址、当前写闪存数据起始地址。
3.如权利要求2所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(1)中,每接收到1包SD数据,当前接收数据地址向后移动1个单位,本次最大能处理的数据数目也相应减1;已接收数据数目每满一个闪存页,则对闪存编程,在编程成功后,当前写闪存数据起始地址向后移动闪存页大小N个单位。
4.如权利要求1所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(2)、(4)、(5)中,SD数据接口和环形队列之间,环形队列和闪存之间的数据传输是通过直接内存访问方式完成。
5.如权利要求1所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(3)中,临时碎片块保存一次SD接口写操作结束时不满一个闪存页的记录,每个逻辑块最多只有一个这样的记录,如果该临时碎片块中包含有该逻辑块的记录,将该数据读出到环形队列中,在写操作时判断写数据的起始逻辑地址和临时碎片块中记录的数据结束地址是否连续,做相应处理:当连续时,将环形队列中的数据和本次写数据拼接,保持地址连续;当不连续时,则将不满闪存页记录写入临时逻辑块中。
6.如权利要求5所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述连续时,在临时碎片块中数据读出到环形队列中和接收完第一包SD数据后,环形队列中空闲的缓存数目将减少。
7.如权利要求1所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(4)中,本次接收数据数目设置为环形队列中空闲缓存的数目和本次最大能处理的数据数目两者中较小的一个。
8.如权利要求7所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述本次接收数据数目在闪存编程成功后会重新设置,其值会加上闪存页大小N和本次最大能处理的数据数目中较小的一个。
9.如权利要求1所述的基于SD接口使用环形队列快速写闪存介质的方法,其特征在于:所述步骤(5)中,如果闪存读写遇到逻辑换块或者物理换块,则停止数据接收,并更新逻辑和物理地址映射关系,并将其保存在闪存介质中,重新计算最大能处理的数据数目后,继续接收数据;在接收到写结束命令后,设置接收数据数目默认值为1。
CN201010576747.3A 2010-12-07 2010-12-07 基于sd接口使用环形队列快速写闪存介质的方法 Active CN102568570B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201010576747.3A CN102568570B (zh) 2010-12-07 2010-12-07 基于sd接口使用环形队列快速写闪存介质的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201010576747.3A CN102568570B (zh) 2010-12-07 2010-12-07 基于sd接口使用环形队列快速写闪存介质的方法

Publications (2)

Publication Number Publication Date
CN102568570A CN102568570A (zh) 2012-07-11
CN102568570B true CN102568570B (zh) 2016-04-27

Family

ID=46413777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201010576747.3A Active CN102568570B (zh) 2010-12-07 2010-12-07 基于sd接口使用环形队列快速写闪存介质的方法

Country Status (1)

Country Link
CN (1) CN102568570B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104731722B (zh) * 2015-04-17 2018-08-07 吉林大学 一种针对缓存页面的页面管理方法及装置
CN110138553B (zh) * 2019-05-10 2022-08-19 郑州信大捷安信息技术股份有限公司 一种IPSec VPN网关数据包处理装置及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208753A (zh) * 2005-03-14 2008-06-25 晟碟以色列有限公司 使用相对等级来实现闪存中的磨损均衡的方法
CN101836258A (zh) * 2007-08-29 2010-09-15 莫塞德技术公司 菊花链存储器配置和用途

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005041207A2 (en) * 2003-10-29 2005-05-06 Matsushita Electric Industrial Co.,Ltd. Drive device and related computer program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208753A (zh) * 2005-03-14 2008-06-25 晟碟以色列有限公司 使用相对等级来实现闪存中的磨损均衡的方法
CN101836258A (zh) * 2007-08-29 2010-09-15 莫塞德技术公司 菊花链存储器配置和用途

Also Published As

Publication number Publication date
CN102568570A (zh) 2012-07-11

Similar Documents

Publication Publication Date Title
US8429352B2 (en) Method and system for memory block flushing
TWI385519B (zh) 資料寫入方法及使用此方法的快閃儲存系統與其控制器
US8626987B2 (en) Flash memory system and defragmentation method
JP4777263B2 (ja) マスストレージアクセラレータ
US8473675B2 (en) Memory system and information processing device
US20120290779A1 (en) Data management in solid-state storage devices and tiered storage systems
CA2673434C (en) Memory device performance enhancement through pre-erase mechanism
EP2319047B1 (en) Multiple performance mode memory system
JP5418808B2 (ja) 適応ハイブリッド密度メモリ記憶装置の制御方法、及び適応ハイブリッド密度メモリ記憶装置
KR100939145B1 (ko) 메모리 디바이스
US9582416B2 (en) Data erasing method, memory control circuit unit and memory storage apparatus
US20070214309A1 (en) Nonvolatile storage device and data writing method thereof
US20100332732A1 (en) Memory systems and mapping methods thereof
CN101297276A (zh) 具有本地执行功能和存储功能的大容量存储设备
US20120155167A1 (en) Non-volatile storage device, information processing system and write control method of non-volatile storage device
WO2010146767A1 (ja) 不揮発性記憶装置、アクセス装置、不揮発性記憶システム及びメモリコントローラ
US20100169556A1 (en) Nonvolatile storage device, information recording system, and information recording method
JP2016515231A (ja) 不揮発性記憶デバイスのためのメモリーのリアドレシング
KR20200016075A (ko) 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치
CN112882650A (zh) 数据储存装置以及非挥发式存储器控制方法
US20220269602A1 (en) Storage device and storage system including the same
US20090210612A1 (en) Memory controller, nonvolatile memory device, and nonvolatile memory system
CN102568570B (zh) 基于sd接口使用环形队列快速写闪存介质的方法
CN112882649A (zh) 数据储存装置以及非挥发式存储器控制方法
CN101324899B (zh) 一种快速写nand型flash的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C53 Correction of patent for invention or patent application
CB03 Change of inventor or designer information

Inventor after: Shi Lei

Inventor after: Jiang Yan

Inventor after: Wei Yue

Inventor before: Shi Lei

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: SHI LEI TO: SHI LEI JIANG YAN WEI YUE

C14 Grant of patent or utility model
GR01 Patent grant