CN102880423B - 数据串分派与传送方法、存储器控制器与存储器储存装置 - Google Patents
数据串分派与传送方法、存储器控制器与存储器储存装置 Download PDFInfo
- Publication number
- CN102880423B CN102880423B CN201110195662.5A CN201110195662A CN102880423B CN 102880423 B CN102880423 B CN 102880423B CN 201110195662 A CN201110195662 A CN 201110195662A CN 102880423 B CN102880423 B CN 102880423B
- Authority
- CN
- China
- Prior art keywords
- responseapdu
- memory
- computer system
- host computer
- serial 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.)
- Active
Links
Landscapes
- Information Transfer Systems (AREA)
- Read Only Memory (AREA)
Abstract
一种数据串分派与传送方法、存储器控制器与存储器储存装置,数据串分派与传送方法用于具有非易失性存储器模块与智能卡芯片的存储器储存装置。本方法包括为非易失性存储器模块配置多个逻辑块地址,其中多个特定逻辑块地址被用以存储特定文件。本方法也包括从智能卡芯片中接收响应数据单元,并且在缓冲存储器中存储此响应数据单元。本方法亦包括当对应来自于主机系统的读取命令的逻辑块地址属于此些特定逻辑块地址的其中之一且缓冲存储器中存有响应数据单元时,将响应数据单元通过对齐存取单位传送给主机系统。基此,本方法能够使主机系统无误地接收到智能卡芯片的响应数据单元。
Description
技术领域
本发明是涉及一种数据串分派与传送方法,且尤其涉及一种适用于在主机系统和具有非易失性存储器与智能卡芯片的存储器储存装置之间分派与传送数据串的方法及使用此方法的存储器控制器与存储器储存装置。
背景技术
数码相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对存储媒体的需求也急速增加。由于非易失性存储器(例如,闪速存储器)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。
另一方面,随着使用者逐渐接受使用电子钱包及预付储值,使得智能卡的使用日益普及。智能卡(Smart Card)是具有例如微处理器、卡操作系统、安全模块及存储器的组件的集成电路芯片(IC芯片),以允许持有者执行预定操作。智能卡提供计算、加密、双向通信及安全功能,使得这张卡片除了存储资料的功能外还能达到对其所存储的数据加以保护的功能。使用全球移动通信系统(GSM)机制的蜂巢式电话中所使用的用户识别模块(Subscriber Identification Module,SIM)卡为智能卡的其中一个应用范例。然而,智能卡本身受限于存储容量,因此近年来开始与大量储存装置的存储卡作结合,以扩增智能卡的存储容量。
然而,在同时配置可复写式非易失性存储器模块与智能卡芯片的存储卡中,如何区分来自于主机系统的数据串是属于智能卡芯片的命令数据单元以及将来自于智能卡芯片的响应数据单元传递给主机系统成为此领域技术人员所欲解决的课题。
发明内容
本发明提出一种数据串分派与传送方法、存储器控制器与存储器储存装置,其能够正确地且有效地传递属于智能卡芯片的数据单元。
本发明范例实施例提出一种数据串分派与传送方法,用于具有可复写式非易失性存储器模块与智能卡芯片的存储器储存装置。本数据串分派与传送方法包括:为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件。此外,本数据串分派与传送方法也包括,当从智能卡芯片中接收一响应数据单元时,将此响应数据单元存储在缓冲存储器中。本数据串分派与传送方法还包括:从主机系统中接收一读取命令并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。本数据串分派与传送方法也包括,当对应此读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,判断缓冲存储器中是否存储有该响应数据单元。本数据串分派与传送方法还包括,当缓冲存储器中存有响应数据单元时,将存储于缓冲存储器中的响应数据单元通过对齐一存取单位传送给主机系统。
在本发明的一实施例中,上述的将存储于缓冲存储器中的响应数据单元通过对齐存取单位传送给主机系统的步骤包括:判断对应读取命令的起始读取地址是否为存取单位的倍数;当对应读取命令的该起始读取地址不为存取单位的倍数时,先传送第一数据串给主机系统并且之后再传送响应数据单元给主机系统,以及当对应读取命令的该起始读取地址为该存取单位的倍数时,先传送响应数据单元给主机系统。在此,第一数据串的大小是根据公式(1)来设定:
S(D)=AAU-MOD(AAU,SRA) (1)
其中S(D)为第一数据串的大小,AAU为存取单位,SRA为读取命令的起始读取地址,MOD(AAU,SRA)为读取命令的起始读取地址除以存取单位所获得的余数。
在本发明的一实施例中,上述的第一数据串为响应数据单元之中最后一部分的数据。
在本发明的一实施例中,上述的将存储于缓冲存储器中的响应数据单元通过对齐存取单位传送给主机系统的步骤还包括:在传送响应数据单元给主机系统之后,重复地传送响应数据单元或部分的响应数据单元给主机系统直到从主机系统接收到停止读取命令为止。
在本发明的一实施例中,上述的数据串分派与传送方法还包括:当缓冲存储器中未存有响应数据单元时,传送第二数据串给主机系统,其中第二数据串的每个位元皆为零。
在本发明的一实施例中,上述的数据串分派与传送方法还包括:当对应此读取命令的逻辑块地址不属于此些特定逻辑块地址的其中之一时,根据对应读取命令的起始读取地址从可复写式非易失性存储器模块中读取对应此读取命令的第三数据串并且将对应此读取命令的第三数据串传送给主机系统。
在本发明的一实施例中,上述的数据串分派与传送方法还包括:当该缓冲存储器中未存有响应数据单元时,从主机系统判断对应来自于主机系统的轮询命令的读取地址是否为存取单位的倍数,其中当对应此轮询命令的读取地址非为存取单位的倍数时执行步骤(a),并且当对应此轮询命令的读取地址为存取单位的倍数时执行步骤(b);(a)传送第二数据串给主机系统以响应该轮询命令,其中第二数据串的每个位元皆为零;(b)判断缓冲存储器中是否存储有响应数据单元,其中当缓冲存储器中存储有响应数据单元时执行步骤(c)并且当缓冲存储器中未存储有响应数据单元时执行步骤(d);(c)将存储于缓冲存储器中的响应数据单元传送给主机系统;以及(d)传送第二数据串给主机系统以响应轮询命令。
本发明范例实施例提出一种数据串分派与传送方法,用于具有可复写式非易失性存储器模块与智能卡芯片的存储器储存装置。本数据串分派与传送方法包括:为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件。本数据串分派与传送方法也包括,当从智能卡芯片中接收到响应数据单元时,将此响应数据单元存储在缓冲存储器中。本数据串分派与传送方法还包括从主机系统中接收读取命令并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。本数据串分派与传送方法也包括,当对应读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,则判断缓冲存储器中是否存储有响应数据单元。本数据串分派与传送方法还包括,当缓冲存储器中未存有响应数据单元时,判断对应来自于主机系统的轮询命令的读取地址是否为存取单位的倍数,其中当对应此轮询命令的读取地址非为存取单位的倍数时执行步骤(a),并且当对应此轮询命令的读取地址为存取单位的倍数时执行步骤(b);(a)传送第二数据串给主机系统以响应该轮询命令,其中第二数据串的每个位元皆为零;(b)判断缓冲存储器中是否存储有响应数据单元,其中当缓冲存储器中存储有响应数据单元时执行步骤(c)并且当缓冲存储器中未存储有响应数据单元时执行步骤(d);(c)将存储于缓冲存储器中的响应数据单元传送给主机系统;以及(d)传送第二数据串给主机系统以响应此轮询命令。
在本发明的一实施例中,上述的数据串分派与传送方法还包括,当对应读取命令的逻辑块地址不属于此些特定逻辑块地址的其中之一时,根据对应读取命令的起始读取地址从该可复写式非易失性存储器模块中读取对应此读取命令的第三数据串并且将对应此读取命令的第三数据串传送给主机系统。
本发明范例实施例提出一种存储器控制器,用于配置在具有可复写式非易失性存储器模块与智能卡芯片的存储器储存装置中。本存储器控制器包括主机接口、存储器接口、缓冲存储器与存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至可复写式非易失性存储器模块。存储器管理电路耦接缓冲存储器、主机接口与存储器接口。在此,存储器管理电路会为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件。此外,当从智能卡芯片中接收响应数据单元时,存储器管理电路将该响应数据单元存储在一缓冲存储器中。再者,存储器管理电路从主机系统中接收一读取命令,并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。当对应此读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,存储器管理电路会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中存有响应数据单元时,存储器管理电路将存储于缓冲存储器中的响应数据单元通过对齐一存取单位传送给主机系统。
在本发明的一实施例中,上述的存储器管理电路会判断对应此读取命令的该起始读取地址是否为存取单位的倍数。当对应此读取命令的起始读取地址不为存取单位的倍数时,存储器管理电路先传送第一数据串给主机系统并且之后再传送响应数据单元给主机系统。此外,当对应此读取命令的起始读取地址为存取单位的倍数时,存储器管理电路先传送响应数据单元给主机系统。
在本发明的一实施例中,在传送该响应数据单元给该主机系统之后,存储器管理电路会重复地传送响应数据单元或部分的响应数据单元给主机系统直到从主机系统接收到停止读取命令为止。
在本发明的一实施例中,当缓冲存储器中未存有响应数据单元时,存储器管理电路会传送第二数据串给主机系统,其中此第二数据串的每个位元皆为零。
本发明范例实施例提出一种存储器控制器,用于配置在具有可复写式非易失性存储器模块与智能卡芯片的存储器储存装置中。本存储器控制器包括主机接口、存储器接口、缓冲存储器与存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至可复写式非易失性存储器模块。存储器管理电路耦接缓冲存储器、主机接口与存储器接口。在此,存储器管理电路会为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储特定文件。此外,当从智能卡芯片中接收到响应数据单元时,存储器管理电路会将此响应数据单元存储在缓冲存储器中。另外,存储器管理电路会从主机系统中接收读取命令并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。当对应此读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,存储器管理电路会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中未存有响应数据单元时,存储器管理电路会判断对应来自于主机系统的轮询命令的读取地址是否为存取单位的倍数。当对应此轮询命令的读取地址非为存取单位的倍数时,存储器管理电路传送第二数据串给主机系统以响应该轮询命令,其中此第二数据串的每个位元皆为零。当对应此轮询命令的读取地址为存取单位的倍数时,存储器管理电路会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中存储有响应数据单元时,存储器管理电路会将存储于缓冲存储器中的响应数据单元传送给主机系统,并且,当缓冲存储器中未存储有响应数据单元时,存储器管理电路会传送第二数据串给主机系统以响应此轮询命令。
在本发明的一实施例中,当对应此读取命令的逻辑块地址不属于此些特定逻辑块地址的其中之一时,存储器管理电路根据对应此读取命令的起始读取地址从可复写式非易失性存储器模块中读取对应此读取命令的第三数据串并且将对应此读取命令的第三数据串传送给主机系统。
本发明范例实施例提出一种存储器储存装置,其包括连接器、可复写式非易失性存储器模块、智能卡芯片与存储器控制器。连接器用以耦接至主机系统。存储器控制器耦接至连接器、可复写式非易失性存储器模块与智能卡芯片,并且具有缓冲存储器。存储器控制器为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储特定文件。当从智能卡芯片中接收响应数据单元时,存储器控制器会将此响应数据单元存储在此缓冲存储器中。此外,存储器控制器从主机系统中接收一读取命令,并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。当对应此读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,存储器控制器会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中存有响应数据单元时,存储器控制器会将存储于缓冲存储器中的响应数据单元通过对齐存取单位传送给主机系统。
在本发明的一实施例中,上述的存储器控制器会判断对应此读取命令的起始读取地址是否为存取单位的倍数。当对应此读取命令的起始读取地址不为存取单位的倍数时,存储器控制器先传送第一数据串给主机系统并且之后再传送响应数据单元给主机系统。此外,当对应此读取命令的起始读取地址为存取单位的倍数时,存储器控制器会先传送响应数据单元给主机系统。
在本发明的一实施例中,在传送响应数据单元给主机系统之后,存储器控制器会重复地传送响应数据单元或部分的响应数据单元给主机系统直到从主机系统接收到停止读取命令为止。
在本发明的一实施例中,当缓冲存储器中未存有响应数据单元时,存储器控制器会传送第二数据串给主机系统,其中此第二数据串的每个位元皆为零。
在本发明的一实施例中,上述的当对应此读取命令的逻辑块地址不属于此些特定逻辑块地址的其中之一时,存储器控制器根据对应此读取命令的起始读取地址从可复写式非易失性存储器模块中读取对应此读取命令的第三数据串并且将对应此读取命令的第三数据串传送给主机系统。
在本发明的一实施例中,当缓冲存储器中未存有响应数据单元时,存储器控制器会判断对应来自于主机系统的轮询命令的读取地址是否为存取单位的倍数。当对应此轮询命令的读取地址非为存取单位的倍数时,存储器控制器会传送第二数据串给主机系统以响应此轮询命令,其中此第二数据串的每个位元皆为零。此外,当对应此轮询命令的读取地址为存取单位的倍数时,存储器控制器会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中存储有响应数据单元时,存储器控制器会将存储于缓冲存储器中的响应数据单元传送给主机系统。此外,当缓冲存储器中未存储有响应数据单元时,存储器控制器传送第二数据串给主机系统以响应此轮询命令。
本发明范例实施例提出一种存储器控制器,用于配置在具有可复写式非易失性存储器模块与智能卡芯片的存储器储存装置中。本存储器控制器包括主机接口、存储器接口、缓冲存储器与存储器管理电路。主机接口用以耦接至主机系统。存储器接口用以耦接至可复写式非易失性存储器模块。存储器管理电路耦接缓冲存储器、主机接口与存储器接口。在此,存储器管理电路会为可复写式非易失性存储器模块配置多个逻辑块地址,其中此些逻辑块地址之中的多个特定逻辑块地址被用以存储特定文件。此外,当从智能卡芯片中接收到响应数据单元时,存储器管理电路会将此响应数据单元存储在缓冲存储器中。另外,存储器管理电路会从主机系统中接收读取命令并且判断对应此读取命令的起始读取地址是否属于此些特定逻辑块地址的其中之一。当对应此读取命令的起始读取地址属于此些特定逻辑块地址的其中之一时,存储器管理电路会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中未存有响应数据单元时,存储器控制器会判断对应来自于主机系统的轮询命令的读取地址是否为存取单位的倍数。当对应此轮询命令的读取地址非为存取单位的倍数时,存储器控制器会传送第二数据串给主机系统以响应此轮询命令,其中此第二数据串的每个位元皆为零。此外,当对应轮询命令的读取地址为存取单位的倍数时,存储器控制器会判断缓冲存储器中是否存储有响应数据单元。当缓冲存储器中存储有响应数据单元时,存储器控制器会将存储于缓冲存储器中的响应数据单元传送给主机系统。并且,当缓冲存储器中未存储有响应数据单元时,存储器控制器会传送第二数据串给主机系统以响应此轮询命令。
在本发明的一实施例中,当对应此读取命令的逻辑块地址不属于此些特定逻辑块地址的其中之一时,存储器控制器会根据对应此读取命令的起始读取地址从可复写式非易失性存储器模块中读取对应此读取命令的第三数据串并且将对应此读取命令的第三数据串传送给主机系统。
基于上述,根据本发明一范例实施例的数据串分派与传送方法、存储器控制器与存储器储存装置能够正确地传递智能卡芯片的命令数据单元与响应数据单元。此外,根据本发明另一范例实施例的数据串分派与传送方法、存储器控制器与存储器储存装置能够有效地缩短传递响应数据单元的时间。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据第一范例实施例显示的主机系统与存储器储存装置的概要方框图。
图2是根据第一范例实施例所显示的存储器控制器的概要方框图。
图3是根据第一范例实施例所显示的应用程序的存取示意图。
图4是根据本发明第一范例实施例所显示的状态机的示意图。
图5是根据第一范例实施例所显示的预读取的数据流示意图。
图6是根据第一范例实施例所显示的预读取的数据流示意图。
图7是根据第一范例实施例所显示的数据串分派与传送方法的流程图。
图8是根据第一范例实施例所显示的数据串分派与传送方法的流程图。
图9是根据第二范例实施例所显示的预读取的数据流示意图。
图10是根据第二范例实施例所显示的数据串分派与传送方法的流程图。
附图标记:
100:存储器储存装置
102:连接器
104:存储器控制器
106:可复写式非易失性存储器模块
108:智能卡芯片
108a:接口
1000:主机系统
1102:微处理器
1104:储存装置
1106:高速存储器
1108:输入/输出装置
1110:操作系统
1120:应用程序
202:存储器管理电路
204:主机接口
206:存储器接口
208:缓冲存储器
254:电源管理电路
256:错误检查与校正电路
LBA(0)~LBA(N):逻辑块地址
401:闲置状态
403:处理状态
405:数据可用状态
S501、S503、S505、S507、S601、S603、S605、S607、S609、S701、S703、S705、S707、S709、S711、S713、S715、S717、S719、S721:数据流
S701、S703、S705、S707、S709、S801、S803、S805、S807、S809、S811:数据串分派与传送的步骤
S901、S903、S905、S907、S909、S911:数据流
S1001、S1003、S1005、S1007、S1009、S1011、S1013、S1015、S1017、S1019:数据串分派与传送的步骤
具体实施方式
[第一范例实施例]
图1是根据第一范例实施例显示的主机系统与存储器储存装置的概要方框图。
请参照图1,主机系统1000包括微处理器1102、储存装置1104、高速存储器1106与输入/输出装置1108。当主机系统1000开机时,微处理器1102会执行安装于储存装置1104中的操作系统1110,以使主机系统1000根据使用者的操作而提供对应的功能。例如,在主机系统1000为手机系统,并且操作系统1108为Symbian、Android或其他操作系统的例子中,当主机系统1000开机后,使用者可通过输入/输出装置1108操作主机系统1000以执行通信、影音播放等功能。虽然在本范例实施例中,主机系统1000是以手机系统来作说明,然而,在本发明另一范例实施例中主机系统1000亦以是计算机、数码相机、摄影机、音频播放器或视频播放器等系统。
存储器储存装置100是用以耦接至主机系统1000,以根据来自于主机系统1000的操作系统1110的命令执行数据的写入与读取。例如,在主机系统1000为手机系统的例子中,存储器储存装置100可为安全数码(Secure Digital,SD)卡、多媒体存储卡(Multi Media Card,MMC)卡、记忆棒(memory stick)、小型闪速(Compact Flash,CF)卡或嵌入式储存装置。嵌入式储存装置包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接耦接于主机系统的基板上。
存储器储存装置100包括连接器102、存储器控制器104与可复写式非易失性存储器模块106。
连接器102为符合SD标准的连接器。然而,必须了解的是,本发明不限于此,连接器102亦可以是符合MS标准、MMC标准、CF标准、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394标准、高速周边零件连接接口(Peripheral ComponentInterconnect Express,PCI Express)标准、串行高级技术附件(SerialAdvanced Technology Attachment,SATA)标准、通用串行总线(UniversalSerial Bus,USB)标准、电子集成驱动器(Integrated Device Electronics,IDE)标准或其他标准的连接器。
存储器控制器104用以执行以硬件型式或固件型式实作的多个逻辑门或控制命令,并且根据主机系统1000的命令在可复写式非易失性存储器模块106中进行数据的写入、读取与抹除等操作。特别是,存储器控制器104能够执行根据本范例实施例的数据串分派与传送方法来分派与传送数据串。
可复写式非易失性存储器模块106是耦接至存储器控制器104,并且用以存储主机系统1000所写入的数据。可复写式非易失性存储器模块106包括多个实体块。各实体块分别具有多个实体页面,其中属于同一个实体块的实体页面可被独立地写入且被同时地抹除。更详细来说,实体块为抹除的最小单位。亦即,每一实体块含有最小数目之一并被抹除的存储单元。实体页面为程序的最小单元。即,实体页面为写入数据的最小单元。然而,必须了解的是,在本发明另一范例实施例中,写入数据的最小单位亦可以是扇区(Sector)或其他大小。
在本范例实施例中,存储器控制器104会将可复写式非易失性存储器模块106的实体块逻辑地分组为数据区、备用区、系统区与取代区,其中被分组为数据区与备用区的实体块会轮替地来存储主机系统1000所写入的数据,系统区的实体块是用以存储存储器储存装置100的系统数据,而取代区的实体块是用以取代数据区与备用区中的坏实体块。此外,为了使主机系统1000能够方便地对以轮替方式存储数据的实体块进行存取,存储器控制器104会配置逻辑块地址LBA(0)~LBA(N)来映射此些实体块,由此主机系统1000能够直接地依据逻辑块地址来进行数据的写入与读取。例如,在本范例实施例中,一个逻辑块地址LBA(0)的容量为4千字节(Kilobyte,KB),但本发明不限于此。
在本范例实施例中,可复写式非易失性存储器模块106为可复写式可复写式非易失性存储器模块。例如,可复写式非易失性存储器模块106为多层存储单元(Multi Level Cell,MLC)NAND闪速存储器模块。然而,本发明不限于此,可复写式非易失性存储器模块106亦可是单层存储单元(Single Level Cell,SLC)NAND闪速存储器模块、其他闪速存储器模块或其他具有相同特性的存储器模块。
在本范例实施例中,存储器储存装置100还包括智能卡芯片108。智能卡芯片108是通过接口108a耦接至存储器控制器104,其中接口108a是专门用以与智能卡芯片108进行通信的接口。
智能卡芯片108具有微处理器、安全模块、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦可编程只读存储器(Electrically Erasable Programmable Read-OnlyMemory,EEPROM)、震荡器等元件。微处理器用以控制智能卡芯片108的整体运作。安全模块用以对存储至智能卡芯片108中的数据进行加解密。震荡器用以产生智能卡芯片108运作时所需的时脉信号。随机存取存储器用以暂存运算的数据或固件程序。电可擦可编程只读存储器用以存储使用者数据。只读存储器用以存储智能卡芯片108的固件程序。具体来说,当智能卡芯片108运作时,智能卡芯片108的微处理器会执行只读存储器中的固件程序来执行相关运作。
特别是,智能卡芯片108的安全模块会执行一安全机制以防止欲窃取存储于智能卡芯片108中所存储的数据的攻击。例如,此攻击包括时间攻击(timing attack)、单一电力分析攻击(single-power-analysis attack)或差异电力分析攻击(differential-power-analysis)。此外,智能卡芯片108所执行的安全机制是符合联邦信息处理标准(Federal InformationProcessing Standards,FIPS)140-2的第三等级或更高等级或者符合EMVEL的第三等级或更高等级。也就是说,智能卡芯片108是通过FIPS 140-2的第四级以上的认证或者通过EMV EL的第四级以上的认证。在此,FIPS是美国联邦政府制定给所有军事机构除外的政府机构及政府的承包商所使用的公开标准,其中FIPS 140-2制定了关于数据安全的等级。此外,EMV是国际金融业界对于智能卡与可使用芯片卡的销售点(point-of-sale,POS)终端机,以及银行机构所广泛设置的自动柜员机等所制定的专业交易与认证的标准规范。此规范是针对芯片信用卡与现金卡的支付款系统(Payment System)的相关软硬件所设置的标准。在本范例实施例中,藉由智能卡芯片108的运作,存储器储存装置100可提供具有身份认证的服务,例如,小额付款服务、票证服务等。
图2是根据第一范例实施例所显示的存储器控制器的概要方框图。
请参照图2,存储器控制器104包括存储器管理电路202、主机接口204、存储器接口206与缓冲存储器208。
存储器管理电路202用以控制存储器控制器104的整体运作。具体来说,存储器管理电路202具有多个控制命令,并且在存储器储存装置100被电源开机(power on)时,此些控制命令会被执行以控制存储器控制器104的整体运作。
在本范例实施例中,存储器管理电路202的控制命令是以固件型式来实作。例如,存储器管理电路202具有微处理器单元(未示出)与只读存储器(未示出),并且此些控制命令是被烧录至此只读存储器中。当存储器储存装置100运作时,此些控制命令会由微处理器单元来执行。
在本发明另一范例实施例中,存储器管理电路202的控制命令亦可以程序码型式存储于可复写式非易失性存储器模块106的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路202具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。特别是,此只读存储器具有驱动码段,并且当存储器控制器104被使能时,微处理器单元会先执行此驱动码段来将存储于可复写式非易失性存储器模块106中的控制命令载入至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制命令。此外,在本发明另一范例实施例中,存储器管理电路202的控制命令亦可以一硬件型式来实作。
主机接口204是耦接至存储器管理电路202并且用以接收与识别主机系统1000所传送的命令与数据。也就是说,主机系统1000所传送的命令与数据会通过主机接口204来传送至存储器管理电路202。在本范例实施例中,主机接口204为符合SD标准的接口。然而,必须了解的是本发明不限于此,主机接口204亦可以是符合MS标准、MMC标准、CF标准、PATA标准、IEEE 1394标准、PCI Express标准、SATA标准、USB标准、IDE标准或其他标准的接口。
存储器接口206是耦接至存储器管理电路202并且用以存取可复写式非易失性存储器模块106。也就是说,欲写入至可复写式非易失性存储器模块106的数据会经由存储器接口206转换为可复写式非易失性存储器模块106所能接受的格式。
缓冲存储器208是耦接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与命令或来自于可复写式非易失性存储器模块106的数据。
在本发明一范例实施例中,存储器控制器104还包括电源管理电路254。电源管理电路254是耦接至存储器管理电路202并且用以控制存储器储存装置100的电源。
在本发明一范例实施例中,存储器控制器104还包括错误检查与校正电路256。错误检查与校正电路256是耦接至存储器管理电路202并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路202从主机系统1000中接收到写入命令时,错误检查与校正电路256会为对应此写入命令的数据产生对应的错误检查与校正码(Error Checking and Correcting Code,ECC Code),并且存储器管理电路202会将对应此写入命令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块106中。之后,当存储器管理电路202从可复写式非易失性存储器模块106中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路256会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序。
值得一提的是,智能卡芯片108是通过存储器储存装置100的连接器102接收来自于主机系统1000的命令与数据与传送数据至主机系统1000,而非直接通过智能卡接口(即,接口108a)与主机系统1000通信。基此,在第一范例实施例中,应用程序1120会被安装在主机系统1000中,以处理欲传送给智能卡芯片108的命令数据单元以及识别智能卡芯片108的响应数据单元。例如,在本范例实施例中,传送给智能卡芯片108的命令数据单元称为命令-应用程序协定数据单元(Command-Application Protocol Data Unit,C-APDU)并且来自于智能卡芯片108的响应数据单元称为响应-应用程序协定数据单元(Response-Application Protocol Data Unit,R-APDU)。特别是,存储器控制器104会根据本范例实施例的数据串传送与分派方法来识别与传送智能卡芯片108的C-APDU与R-APDU。也就是说,当主机系统1000对具有可复写式非易失性存储器模块106与智能卡芯片108的架构的存储器储存装置100进行操作时,存储器控制器104会配合应用程序1120的运作根据本范例实施例的数据串传送与分派方法来传送与分派欲下达给智能卡芯片108的C-APDU以正确地将属于C-APDU的数据串传送至智能卡芯片108并且将来自于智能卡芯片108的R-APDU正确地回传给主机系统1000。
在本范例实施例中,应用程序1120会在存储器储存装置100存储一个或多个文件,并且将用以存储此一个或多个文件的逻辑块地址的信息传送给存储器控制器104。例如,当应用程序1120下达在存储器储存装置100中存储文件RF的命令时,操作系统1110会根据存储器储存装置100的文件系统(未示出)使用部分的逻辑块地址(例如,逻辑块地址LBA(P)~LBA(K))来写入文件RF。在此,用以存储文件RF的逻辑块地址的被称为特定逻辑块地址(如图3的斜线所示)。
特别是,在本范例实施例中,任何针对智能卡芯片108的操作都是藉由应用程序1120对文件RF进行存取来完成。也就是说,应用程序1120会通过对文件RF的写入命令将C-APDU传送至存储器储存装置100并且通过对文件RF的读取命令从存储器储存装置100中读取R-APDU。值得一提的是,在其他操作系统中,应用程序1120亦可直接对对应文件RF的特定逻辑块地址进行存取,来执行对智能卡芯片108的操作。
具体来说,存储器控制器104的存储器管理电路202包括状态机(state machine)并且会根据主机系统1000对智能卡芯片108的操作来更新此状态机的状态。此外,当应用程序1120对此文件RF进行存取时,存储器控制器104会根据此状态机的状态来判断是否将来自于主机系统1000的数据串传送给智能卡芯片108或者将对应的响应信息回传给主机系统1000。
图4是根据第一范例实施例所显示的状态机的示意图。
请参照图4,在存储器储存装置100开始运作时,状态机会处于闲置(Idle)状态401。在闲置状态401期间,存储器控制器104会判断来自于主机系统1000的写入命令是否为对应特定逻辑块地址并且对应此写入命令的数据串是否含有特定标记。具体来说,当应用程序1120传送C-APDU给存储器储存装置100时,应用程序1120会将特定标记与C-APDU封装为欲写入至文件RF的数据串并且操作系统1110会向存储器储存装置100下达写入命令以将此数据串写入至特定逻辑块地址。例如,此特定标记是记录在此数据串的标头中。基此,当存储器储存装置100从主机系统1000中接收到写入命令与对应此些写入命令的数据串时,存储器管理电路202会识别出此写入命令是对应特定逻辑块地址且对应此写入命令的数据串含有特定标记,由此将此数据串中的C-APDU传递给智能卡芯片108。
在存储器管理电路202传送C-APDU给智能卡芯片108之后,状态机会处于处理(In Progress)状态403。在处理状态403期间,存储器控制器104会等候来自于智能卡芯片108的R-APDU。也就是说,处理状态403表示存储器管理电路202尚未从智能卡芯片108中接收到R-APDU。倘若在处理状态期间应用程序1120下达对应读取文件RF的读取命令时,存储器管理电路202会回复预设数据串(以下称为第二数据串)给主机系统1000。
具体来说,在本范例实施例中,存储器储存装置100与主机系统1000之间是以固定大小的传输单位来传递数据。例如,此传输单位为512字节(Byte)。以读取数据为例,当对存储器储存装置100下达读取命令之后,主机系统1000的操作系统1110会发送轮询(polling)命令,以询问存储器储存装置100是否已准备好欲读取的数据之中的第一个512字节的数据。当第一个512字节的数据已被放置于缓冲存储器208时,存储器管理电路202会将此第一个512字节的数据传送给主机系统1000。之后,主机系统1000的操作系统1110会再次发送轮询(polling)命令,以询问存储器储存装置100是否已准备好欲读取的数据之中的下一个512字节的数据。以此类推,直到存储器储存装置100接收到停止读取命令时,存储器管理电路202才会停止读取与传送数据。
在本范例是实施例中,第二数据串的大小为512字节且第二数据串的每一个位元皆为0。特别是,当接收到由多个第二数据串所组成的数据串时,应用程序1120会识别R-APDU未被成功接收并且藉由接续读取文件RF中的下一笔数据来尝试从存储器储存装置100中接收R-APDU。在本范例实施例中,应用程序1120是根据固定的存取单位来传递智能卡芯片的命令数据单元,因此,当欲读取R-APDU时,应用程序1120是以固定的存取单位依序地从文件RF中读取数据。例如,此存取单位为8KB。特别是,在本范例实施例中,用以存放文件RF的起始逻辑块地址LBA(P)是存取单位的倍数,由此以利于应用程序1120的存取。
在接收到智能卡芯片108的R-APDU之后,状态机的状态会从处理状态403变为数据可用(Data Available)状态405。在数据可用状态405期间,存储器控制器104会等候主机系统1000传送对应特定逻辑块地址的读取命令。具体来说,存储器管理电路202会将从智能卡芯片108中接收到的R-APDU存储在缓冲存储器208中,并且当从主机系统1000中接收到对应特定逻辑块地址的读取命令时将所存储的R-APDU传送给主机系统1000。特别是,在将所存储的R-APDU传送给主机系统1000之后,状态机的状态会从数据可用状态405变回闲置状态401。由此,存储器控制器104可从主机系统1000接收下一个C-APDU并且传递给智能卡芯片108。
在本发明范例实施例中,存储器储存装置100与主机系统1000之间的数据传递会通过高速存储器1106。具体来说,当主机系统1000从存储器储存装置100中读取数据时,主机系统1000的操作系统1110会以预读取(Prefetch)前后地址的方式来提升效能。例如,当主机系统1000的应用程序1120从存储器储存装置100的逻辑块地址LBA(P)开始读取数据量为8KB的数据时,主机系统1000的操作系统1110会从存储器储存装置100的逻辑块地址LBA(P-1)开始读取数据量为64KB的数据并存储此数据于高速存储器1106中。
之后,应用程序1120会从高速存储器1106中放置属于逻辑块地址LBA(P)的数据的地址开始读取数据量为8KB的数据。由于操作系统1110会以预读取的方式先读取后续的数据,基此,当下一个读取命令所欲读取的数据已存储于高速存储器1106中时,主机系统1000的操作系统1110将能够直接地从高速存储器1106中读取此数据,由此提升存取速度。
值得一提的是,为了避免主机系统1000的操作系统1110直接地从高速存储器1106中提供此数据给应用程序1120而影响智能卡芯片108的R-APDU的传递,在本范例实施例中,文件RF的大小会被设计大于高速存储器1106的大小。基此,当应用程序1120已将文件RF中的数据读取完毕仍未接收到R-APDU并且从头开始重新读取文件RF时,操作系统1110重新至存储器储存装置100中读取数据,由此R-APDU就可被传递至主机系统1000。
图5是根据第一范例实施例所显示的预读取的数据流示意图,其显示在操作系统1110下达读取命令时存储器控制器104尚未从智能卡芯片108中取得R-APDU的范例。
请参照图5,应用程序1120会传送指示从特定逻辑块地址LBA(P)开始读取数据量为8KB的数据的读取请求RR1给操作系统1110(数据流S501)。
假设高速存储器1106未存有对应特定逻辑块地址LBA(P)的数据,因此操作系统1110会以预读取方式传送从存储器储存装置特定逻辑块地址LAB(P-1)开始读取数据量为64KB的数据的读取命令RC给存储器控制器104(数据流S503)。
由于此时存储器控制器104尚未从智能卡芯片108中取得R-APDU,因此存储器控制器104会将多个第二数据串DS3传送给主机系统1000(数据流S505)。具体来说,在传送读取命令RC之后,操作系统1110会不断地发送轮询命令来读取数据并且存储器控制器104会根据传输单位(例如,512字节)将第二数据串DS3分批传送给主机系统1000。在此,第二数据串DS3的大小为512字节,因此为响应从特定逻辑块地址LBA(P-1)开始读取数据量为64KB的数据的读取命令RC,存储器控制器104会依序地传送128个第二数据串DS3以响应对应此读取命令RC的多个轮询命令。基此,包含128个第二数据串DS3的数据串会被存储在高速存储器1106中。
之后,操作系统1110会将高速存储器1106中对应特定逻辑块地址LBA(P)的8KB数据(即,16个第二数据串DS3)传送给应用程序1120(数据流S507)。
图6是根据第一范例实施例所显示的预读取的数据流示意图,其显示在操作系统1110下达读取命令时存储器控制器104已从智能卡芯片108中取得R-APDU的范例。
请参照图6,在数据流S601中智能卡芯片108将R-APDU传送给存储器控制器104。
在数据流S603中应用程序1120传送指示从特定逻辑块地址LBA(P)开始读取数据量为8KB的数据的读取请求RR1给操作系统1110。
假设高速存储器1106未存有对应特定逻辑块地址LBA(P)的数据,因此操作系统1110会以预读取方式传送从特定逻辑块地址LBA(P-1)开始读取数据量为64KB的数据的读取命令RC给存储器控制器104(数据流S605)。
由于此时存储器控制器104已从智能卡芯片108中取得R-APDU,因此存储器控制器104会将R-APDU传送给主机系统1000(数据流S607)。类似地,在传送读取命令RC之后,操作系统1110会不断地发送轮询命令来读取数据并且存储器控制器104会根据传输单位(例如,512字节)将R-APDU分批传送给主机系统1000。
值得一提的是,在本范例实施例中,存储器控制器104将存储于缓冲存储器208中的R-APDU通过对齐存取单位来传送给主机系统1000。具体来说,存储器控制器104会判断对应来自于主机系统1000的操作系统1110的读取命令的起始读取地址是否为存取单位的倍数。
倘若此起始读取地址为存取单位的倍数时,存储器控制器104会直接将R-APDU传送给主机系统1000。并且,倘若此起始读取地址非为存取单位的倍数时,存储器控制器104会先传送第一数据串之后再将R-APDU传送给主机系统1000。在此,第一数据串的大小是根据公式(1)来设定:
S(D)=AAU-MOD(AAU,SRA) (1)
其中S(D)为第一数据串的大小,AAU为存取单位,SRA为读取命令的起始读取地址,MOD(AAU,SRA)为读取命令的起始读取地址除以存取单位所获得的余数。
例如,若存取单位为32KB,读取命令的起始读取地址为5KB,主机系统1000的读取数据量为64KB,且存储器控制器104已接收到32KB的R-APDU后,存储器控制器104会根据公式(1)先传送R-APDU之后27KB为第一数据串,再传送R-APDU之前5KB,另再依序传送R-APDU之后27KB及前5KB。其中第一数据串可视为预读的部分。故如此,操作系统1110提取高速存储器1106中对应逻辑块地址的数据给应用程序1120时,即为正确的R-APDU。
又例如,以图6为例,由于一个逻辑块地址的容量为4KB,因此,为响应从特定逻辑块地址LBA(P-1)开始读取数据量为64KB的数据的读取命令RC,存储器控制器104会在传送8KB的R-APDU之前传送数据量为4KB的第一数据串DS1,并且在传送R-APDU之后传送数据量为52KB的数据串(以下称为第四数据串DS2)。基此,包含第一数据串、R-APDU与第四数据串的数据串会被存储在高速存储器1106中。
之后,操作系统1110会将高速存储器1106中对应逻辑块地址LBA(P)的8KB数据(即,R-APDU)传送给应用程序1120(数据流S609)。
值得一提的是,在本范例实施例中,第一数据串与第四数据串为每一位元皆为0的数据串。然而,本发明不限于此,在本发明另一范例实施例中,第一数据串亦可为R-APDU的其中一部分。例如,第一数据串为R-APDU之中最后一部分的数据。类似地,在本发明另一范例实施例中,第四数据串可为R-APDU的其中一部分或全部。也就是说,存储器控制器104会在传送R-APDU之后,重复地传送R-APDU直到主机系统1000下达停止读取命令为止。
图7是根据第一范例实施例所显示的数据串分派与传送方法的流程图,其显示接收到写入命令的处理步骤。
请参照图7,在步骤S701中,存储器控制器104的存储器管理电路202会从主机系统1000中接收写入命令与对应此写入命令的数据串。
在步骤S703中,存储器管理电路202会判断对应此写入命令的逻辑块地址是否属于特定逻辑块地址。
倘若对应此写入命令的逻辑块地址不属于特定逻辑块地址时,则在步骤S705中存储器管理电路202会依据此写入命令将所接收的数据串写入至非易失性存储器模块106中。倘若对应此写入命令的逻辑块地址属于特定逻辑块地址时,则在步骤S707中存储器管理电路202会判断所接收的第一数据串是否包含特定标记。
倘若所接收的数据串包含特定标记时,则在步骤S709中存储器管理电路202会将所接收的数据串中的C-APDU(即,所接收的数据串中不包含特定标记的部分)传送给智能卡芯片108。特别是,此时,状态机会从闲置状态401变为处理状态403。倘若在步骤S707中判断所接收的数据串未包含特定标记时,则图7的流程会被结束。
图8是根据第一范例实施例所显示的数据串分派与传送方法的流程图,其显示接收到读取命令的处理步骤。
请参照图8,在步骤S801中,存储器控制器104的存储器管理电路202会从主机系统1000中接收读取命令。
在步骤S803中,存储器管理电路202会判断对应此读取命令的逻辑块地址是否属于特定逻辑块地址。
倘若对应此读取命令的逻辑块地址不属于特定逻辑块地址时,则在步骤S805中,存储器管理电路202会依据此读取命令从非易失性存储器模块106中读取数据(以下称为第三数据串)并且将第三数据串传送给主机系统1000。倘若对应此读取命令的逻辑块地址属于特定逻辑块地址时,则在步骤S807中存储器管理电路202会判断在缓冲存储器208中是否存有R-APDU(即,判断状态机是否处于数据可用状态405)。
倘若缓冲存储器208中尚未存有R-APDU时,在步骤S809中存储器管理电路202会将第二数据串传送给主机系统1000。传送第二数据串与R-APDU的方式已配合图5描述如上,在此不重复描述。
倘若在缓冲存储器208中存有R-APDU时,则在步骤S811中存储器管理电路202会将存储于缓冲存储器208中的R-APDU通过对齐存取单位传送给主机系统1000。例如,在步骤S811中,存储器管理电路202会判断对应此读取命令的起始读取地址是否为存取单位的倍数。当对应读取命令的起始读取地址不为存取单位的倍数时,存储器管理电路202会先传送第一数据串给主机系统1000并且之后再传送R-APDU给主机系统。在此,第一数据串的大小为此读取命令的起始读取地址除以存取单位所获得的余数,再将存取单位减去该余数的所得值。此外,当对应该读取命令的起始读取地址为存取单位的倍数时,存储器管理电路202直接传送R-APDU给主机系统1000。基此,当主机系统1000的操作系统1110以上述预读取方式下达读取命令并且起始读取地址非对齐应用程序1120读取数据的存取单位时,存储器管理电路202会以对齐存取单位的方式来传送R-APDU,以致于应用程序1120能够正确地读取到此R-APDU。
[第二范例实施例]
本发明第二范例实施例的存储器储存装置与主机系统本质上是相同于第一范例实施例的存储器储存装置与主机系统,其中差异在于第二范例实施例的存储器控制器会判断于传送表示尚未接收到R-APDU的数据串给主机系统期间是否接收到R-APDU,并且当接收到R-APDU时更改已准备传送给主机系统的数据,由此提升传递R-APDU的效率。以下将使用图1~图3的装置结构来描述第二范例实施例与第一范例实施例的差异之处。
在第一范例实施例中,当应用程序1120欲以存取单位(即,8KB)来读取文件RF,以尝试读取智能卡芯片108所回复的R-APDU时,主机系统1000的操作系统1110会下达读取命令给存储器存装置1000。此时,存储器控制器104会根据状态机的状态判断R-APDU是否已存储于缓冲存储器208中。倘若R-APDU尚未存储于缓冲存储器208中时,存储器控制器104会传送第二数据串以响应后续对应此读取命令的轮询命令。也就是说,在接收到读取命令时,若R-APDU尚未存储于缓冲存储器208中,存储器控制器104会准备第二数据串并且持续传送第二数据串给主机系统1000直到接收到停止读取命令为止。然而,如上所述,除了应用程序1120所预读取的数据之外,主机系统1000的操作系统1110会以预读取方式读取文件RF的其他数据(例如,64KB的数据)并且将此些预读取的数据存储于高速存储器1106中。因此,当应用程序1120识别所读取的数据非为R-APDU而继续读取RF文件中的下一笔数据时,操作系统1110会直接从高速存储器1106中读取下一笔数据给应用程序1120。并且,仅当应用程序1120所读取的数据不存于高速存储器1106中时,操作系统1110才会再次向存储器储存装置100下达读取命令来读取数据。也就是说,倘若在操作系统1110以预读取方式下达读取命令的时间点,R-APDU尚未存储于缓冲存储器208时,操作系统1110所预读取的数据内不会包含R-APDU并且应用程序1120需等到操作系统1110再次向存储器储存装置100下达读取命令之后才有可能从高速存储器1106中读取到R-APDU。因此,应用程序1120接收到R-APDU的时间可能会有所延迟。
为了避免此延迟,在第二范例实施例中,存储器控制器104还会在响应轮询命令的过程中,根据状态机的状态判断R-APDU是否已存储于缓冲存储器208中。倘若在响应轮询命令的过程中,智能卡芯片108回复R-APDU时,存储器控制器104会更改传送给主机系统1000的数据,由此使应用程序1120能够更快接收到R-APDU。
图9是根据第二范例实施例所显示的预读取的数据流示意图,其显示存储器控制器104于操作系统1110以预读取方式运作读取数据期间从智能卡芯片108中接收到R-APDU的范例。
请参照图9,在数据流S901中应用程序1120传送指示从特定逻辑块地址LBA(P-1)开始读取数据量为8KB的数据的读取请求RR1给操作系统1110。
假设高速存储器1106未存有对应特定逻辑块地址LBA(P)的数据,因此操作系统1110会以预读取方式传送从特定逻辑块地址(P-1)开始读取数据量为64KB的数据的读取命令RC给存储器控制器104(即,数据流S903)。
由于此时存储器控制器104尚未从智能卡芯片108中取得R-APDU,因此存储器控制器104会准备第二数据串并且开始将第二数据串DS3传送给主机系统1000以响应对应此读取命令的轮询命令。首先,存储器控制器104会分别地传送8个第二数据串以响应前8个轮询命令(即,简化的数据流S905)。特别是,此8个第二数据串是对应逻辑块地址LBA(P-1)。之后,再接收到轮询命令时,存储器控制器104会判断目前的轮询命令所对应的读取地址(即,逻辑块地址LBA(P))为存取单位的倍数,并且再次根据状态机的状态判断R-APDU是否已存储于缓冲存储器208中。假设智能卡芯片108于数据流S705期间回复R-APDU(即,数据流S907)时,存储器控制器104会以R-APDU取代第二数据串传送给主机系统1000(即,数据流S909)以响应目前的轮询命令。之后,应用程序1120就能够从高速存储器1106中读取到正确地R-APDU(即,数据流S911)。
也就是说,在本范例实施例中,在接收到读取命令而判断尚未从智能卡芯片108中取得R-APDU而开始传送第二数据串给主机系统的例子中,在传送第二数据串的过程中,倘若目前的轮询命令所对应的读取地址为存取单位的倍数并且R-APDU已存储于缓冲存储器208中时,存储器控制器104会修改欲传送给主机系统1000的数据(即,以R-APDU替换第二数据串),由此缩短应用程序1120正确读取到R-APDU的时间。值得一提的是,应用程序1120是根据存取单位,因此,在目前的轮询命令所对应的读取地址为存取单位的倍数时传送R-APDU才能被应用程序1120正确地读取。基此,在本范例实施例中,存储器控制器104仅于当目前的轮询命令所对应的读取地址为存取单位的倍数时,才再次根据状态机的状态判断R-APDU是否已存储于缓冲存储器208中。然而,必须了解的是,存储器控制器104亦可于任何时间点再次根据状态机的状态判断R-APDU是否已存储于缓冲存储器208中,并且当R-APDU已存储于缓冲存储器208中并且目前的轮询命令所对应的读取地址为存取单位的倍数时才以R-APDU替换第二数据串。
图10是根据第二范例实施例所显示的数据串分派与传送方法的流程图,其显示接收到读取命令的处理步骤。
请参照图10,在步骤S1001中,存储器控制器104的存储器管理电路202会从主机系统1000中接收读取命令。
在步骤S1003中,存储器管理电路202会判断对应此读取命令的逻辑块地址是否属于特定逻辑块地址。
倘若对应此读取命令的逻辑块地址不属于特定逻辑块地址时,则在步骤S1005中存储器管理电路202会依据此读取命令从非易失性存储器模块106中读取数据(以下称为第三数据串)并且将第三数据串传送给主机系统1000。之后,图10的流程会被终止。
倘若对应此读取命令的逻辑块地址属于特定逻辑块地址时,则在步骤S1007中存储器管理电路202会判断在缓冲存储器208中是否存有R-APDU(即,判断状态机是否处于数据可用状态405)。
倘若缓冲存储器208中存有R-APDU时,在步骤S1009中,存储器管理电路202会将存储于缓冲存储器208中的R-APDU通过对齐存取单位传送给主机系统1000。之后,图10的流程会被终止。
倘若缓冲存储器208中尚未存有R-APDU时,在步骤S1011中存储器管理电路202会判断目前的轮询命令所对应的读取地址是否为存取单位的倍数。
倘若目前的轮询命令所对应的读取地址非为存取单位的倍数时,在步骤S1013,存储器管理电路202会依序地将一个第二数据串传送给主机系统1000。并且,在步骤S1015中,存储器管理电路202会判断是否接收到停止读取命令。倘若接收到停止读取命令时,图10的流程会终止。倘若未接收到停止读取命令时,步骤S1011会被执行。
倘若目前的轮询命令所对应的读取地址为存取单位的倍数时,在步骤S1017中,存储器管理电路202会再次判断在缓冲存储器208中是否存有R-APDU。倘若在缓冲存储器208中尚未存有R-APDU时,步骤S1013会被执行。倘若在缓冲存储器208中存有R-APDU时,在步骤S1019中,存储器管理电路202会将R-APDU传送给主机系统1000。之后,图10的流程会被终止。
综上所述,本发明范例实施例的数据串分派与传送方法及使用此方法的存储器控制器与存储器储存装置是根据存取单位来传送智能卡芯片的R-APDU,因此,既使主机系统的操作系统以预读取方式读取数据,R-APDU依然能够正确地传送给智能卡芯片的应用程序。此外,本发明范例实施例的数据串分派与传送方法及使用此方法的存储器控制器与存储器储存装置,会在传送代表未接收到R-APDU的数据串期间,再次判断智能卡芯片是否已回复R-APDU,并且当智能卡芯片已回复R-APDU时以R-APDU来更改欲传送给主机系统的数据,基此,可缩短智能卡芯片的应用程序正确地读取到R-APDU的时间。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中的普通技术人员,当可作些许改动与润饰,而不脱离本发明的精神和范围。
Claims (25)
1.一种数据串分派与传送方法,用于具有一可复写式非易失性存储器模块与一智能卡芯片的一存储器储存装置,该数据串分派与传送方法包括:
为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件;
当从该智能卡芯片中接收一响应数据单元时,将该响应数据单元存储在一缓冲存储器中;
从一主机系统中接收一读取命令;
判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一;
当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,则判断该缓冲存储器中是否存储有该响应数据单元;
当该缓冲存储器中存有该响应数据单元时,将存储于该缓冲存储器中的该响应数据单元通过对齐一存取单位传送给该主机系统,
其中将存储于该缓冲存储器中的该响应数据单元通过对齐一存取单位传送给该主机系统的步骤包括:
判断对应该读取命令的该起始读取地址是否为该存取单位的倍数;
当对应该读取命令的该起始读取地址不为该存取单位的倍数时,先传送一第一数据串给该主机系统并且之后再传送该响应数据单元给该主机系统;以及
当对应该读取命令的该起始读取地址为该存取单位的倍数时,先传送该响应数据单元给该主机系统。
2.根据权利要求1所述的数据串分派与传送方法,其中该第一数据串的一大小是根据公式(1)来设定:
S(D)=AAU-MOD(AAU,SRA) (1)
其中S(D)为该第一数据串的该大小,AAU为该存取单位,SRA为该读取命令的该起始读取地址,MOD(AAU,SRA)为该读取命令的该起始读取地址除以该存取单位所获得的一余数。
3.根据权利要求2所述的数据串分派与传送方法,其中该第一数据串为该响应数据单元之中的部分数据。
4.根据权利要求3所述的数据串分派与传送方法,其中将存储于该缓冲存储器中的该响应数据单元通过对齐一存取单位传送给该主机系统的步骤还包括:
在传送该响应数据单元给该主机系统之后,重复地传送该响应数据单元或部分的该响应数据单元给该主机系统直到从该主机系统接收到一停止读取命令为止。
5.根据权利要求1所述的数据串分派与传送方法,其中还包括:
当该缓冲存储器中未存有该响应数据单元时,传送一第二数据串给该主机系统,其中该第二数据串的每个位元皆为零。
6.根据权利要求1所述的数据串分派与传送方法,其中还包括:
当对应该读取命令的该逻辑块地址不属于该些特定逻辑块地址的其中之一时,根据对应该读取命令的该起始读取地址从该可复写式非易失性存储器模块中读取对应该读取命令的一第三数据串并且将对应该读取命令的该第三数据串传送给该主机系统。
7.根据权利要求1所述的数据串分派与传送方法,其中还包括:
当该缓冲存储器中未存有该响应数据单元时,判断对应来自于该主机系统的一轮询命令的一读取地址是否为该存取单位的倍数,其中当对应该轮询命令的该读取地址非为该存取单位的倍数时执行步骤(a),并且当对应该轮询命令的该读取地址为该存取单位的倍数时执行步骤(b);
(a)传送一第二数据串给该主机系统以响应该轮询命令,其中该第二数据串的每个位元皆为零;
(b)判断该缓冲存储器中是否存储有该响应数据单元,其中当该缓冲存储器中存储有该响应数据单元时执行步骤(c)并且当该缓冲存储器中未存储有该响应数据单元时执行步骤(d);
(c)将存储于该缓冲存储器中的该响应数据单元传送给该主机系统;以及
(d)传送该第二数据串给该主机系统以响应该轮询命令。
8.一种数据串分派与传送方法,用于具有一可复写式非易失性存储器模块与一智能卡芯片的一存储器储存装置,该数据串分派与传送方法包括:
为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件;
当从该智能卡芯片中接收到一响应数据单元时,将该响应数据单元存储在一缓冲存储器中;
从一主机系统中接收一读取命令;
判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一;
当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,则判断该缓冲存储器中是否存储有该响应数据单元;
当该缓冲存储器中未存有该响应数据单元时,判断对应来自于该主机系统的一轮询命令的一读取地址是否为一存取单位的倍数,其中当对应该轮询命令的该读取地址非为该存取单位的倍数时执行步骤(a),并且当对应该轮询命令的该读取地址为该存取单位的倍数时执行步骤(b);
(a)传送一第二数据串给该主机系统以响应该轮询命令,其中该第二数据串的每个位元皆为零;
(b)判断该缓冲存储器中是否存储有该响应数据单元,其中当该缓冲存储器中存储有该响应数据单元时执行步骤(c)并且当该缓冲存储器中未存储有该响应数据单元时执行步骤(d);
(c)将存储于该缓冲存储器中的该响应数据单元传送给该主机系统;以及
(d)传送该第二数据串给该主机系统以响应该轮询命令。
9.根据权利要求8所述的数据串分派与传送方法,其中还包括:
当对应该读取命令的该逻辑块地址不属于该些特定逻辑块地址的其中之一时,根据对应该读取命令的该起始读取地址从该可复写式非易失性存储器模块中读取对应该读取命令的一第三数据串并且将对应该读取命令的该第三数据串传送给该主机系统。
10.一种存储器控制器,用于配置在具有一可复写式非易失性存储器模块与一智能卡芯片的一存储器储存装置中,该存储器控制器包括:
一主机接口,用以耦接至一主机系统;
一存储器接口,用以耦接至该可复写式非易失性存储器模块;
一缓冲存储器;以及
一存储器管理电路,耦接该缓冲存储器、该主机接口与该存储器接口,
其中该存储器管理电路为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件,
其中当从该智能卡芯片中接收一响应数据单元时,该存储器管理电路将该响应数据单元存储在该缓冲存储器中,
其中该存储器管理电路从该主机系统中接收一读取命令,并且判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一,
其中当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,该存储器管理电路会判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中存有该响应数据单元时,该存储器管理电路将存储于该缓冲存储器中的该响应数据单元通过对齐一存取单位传送给该主机系统,
其中该存储器管理电路会判断对应该读取命令的该起始读取地址是否为该存取单位的倍数,
其中当对应该读取命令的该起始读取地址不为该存取单位的倍数时,该存储器管理电路先传送一第一数据串给该主机系统并且之后再传送该响应数据单元给该主机系统,
其中当对应该读取命令的该起始读取地址为该存取单位的倍数时,该存储器管理电路先传送该响应数据单元给该主机系统。
11.根据权利要求10所述的存储器控制器,其中该第一数据串的一大小是根据公式(1)来设定:
S(D)=AAU-MOD(AAU,SRA) (1)
其中S(D)为该第一数据串的该大小,AAU为该存取单位,SRA为该读取命令的该起始读取地址,MOD(AAU,SRA)为该读取命令的该起始读取地址除以该存取单位所获得的一余数。
12.根据权利要求11所述的存储器控制器,其中该第一数据串为该响应数据单元之中最后一部分的数据。
13.根据权利要求12所述的存储器控制器,其中在传送该响应数据单元给该主机系统之后,该存储器管理电路重复地传送该响应数据单元或部分的该响应数据单元给该主机系统直到从该主机系统接收到一停止读取命令为止。
14.根据权利要求10所述的存储器控制器,其中当该缓冲存储器中未存有该响应数据单元时,该存储器管理电路传送一第二数据串给该主机系统,其中该第二数据串的每个位元皆为零。
15.一种存储器控制器,用于配置在具有一可复写式非易失性存储器模块与一智能卡芯片的一存储器储存装置中,该存储器控制器包括:
一主机接口,用以耦接至一主机系统;
一存储器接口,用以耦接至该可复写式非易失性存储器模块;
一缓冲存储器;以及
一存储器管理电路,耦接该缓冲存储器、该主机接口与该存储器接口,
其中该存储器管理电路为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件,
其中当从该智能卡芯片中接收到一响应数据单元时,该存储器管理电路将该响应数据单元存储在该缓冲存储器中,
其中该存储器管理电路从该主机系统中接收一读取命令并且判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一,
其中当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,该存储器管理电路判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中未存有该响应数据单元时,该存储器管理电路判断一对应来自于该主机系统的轮询命令的一读取地址是否为一存取单位的倍数,
其中当对应该轮询命令的该读取地址非为该存取单位的倍数时,该存储器管理电路传送一第二数据串给该主机系统以响应该轮询命令,其中该第二数据串的每个位元皆为零,
其中当对应该轮询命令的该读取地址为该存取单位的倍数时,该存储器管理电路判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中存储有该响应数据单元时,该存储器管理电路将存储于该缓冲存储器中的该响应数据单元传送给该主机系统,
其中当该缓冲存储器中未存储有该响应数据单元时,该存储器管理电路传送该第二数据串给该主机系统以响应该轮询命令。
16.根据权利要求15所述的存储器控制器,
其中当对应该读取命令的该逻辑块地址不属于该些特定逻辑块地址的其中之一时,该存储器管理电路根据对应该读取命令的该起始读取地址从该可复写式非易失性存储器模块中读取对应该读取命令的一第三数据串并且将对应该读取命令的该第三数据串传送给该主机系统。
17.一种存储器储存装置,包括:
一连接器,用以耦接至一主机系统;
一可复写式非易失性存储器模块;
一智能卡芯片;以及
一存储器控制器,耦接至该连接器、该可复写式非易失性存储器模块与该智能卡芯片,并且具有一缓冲存储器,
其中该存储器控制器为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件,
其中当从该智能卡芯片中接收一响应数据单元时,该存储器控制器将该响应数据单元存储在该缓冲存储器中,
其中该存储器控制器从该主机系统中接收一读取命令,并且判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一,
其中当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,该存储器控制器会判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中存有该响应数据单元时,该存储器控制器将存储于该缓冲存储器中的该响应数据单元通过对齐一存取单位传送给该主机系统,
其中该存储器控制器会判断对应该读取命令的该起始读取地址是否为该存取单位的倍数,
其中当对应该读取命令的该起始读取地址不为该存取单位的倍数时,该存储器控制器先传送一第一数据串给该主机系统并且之后再传送该响应数据单元给该主机系统,
其中当对应该读取命令的该起始读取地址为该存取单位的倍数时,该存储器控制器先传送该响应数据单元给该主机系统。
18.根据权利要求17所述的存储器储存装置,其中该第一数据串的一大小是根据公式(1)来设定:
S(D)=AAU-MOD(AAU,SRA) (1)
其中S(D)为该第一数据串的该大小,AAU为该存取单位,SRA为该读取命令的该起始读取地址,MOD(AAU,SRA)为该读取命令的该起始读取地址除以该存取单位所获得的一余数。
19.根据权利要求18所述的存储器储存装置,其中该第一数据串为该响应数据单元之中最后一部分的数据。
20.根据权利要求19所述的存储器储存装置,其中在传送该响应数据单元给该主机系统之后,该存储器控制器重复地传送该响应数据单元或部分的该响应数据单元给该主机系统直到从该主机系统接收到一停止读取命令为止。
21.根据权利要求17所述的存储器储存装置,其中当该缓冲存储器中未存有该响应数据单元时,该存储器控制器传送一第二数据串给该主机系统,其中该第二数据串的每个位元皆为零。
22.根据权利要求17所述的存储器储存装置,其中当对应该读取命令的该逻辑块地址不属于该些特定逻辑块地址的其中之一时,该存储器控制器根据对应该读取命令的该起始读取地址从该可复写式非易失性存储器模块中读取对应该读取命令的一第三数据串并且将对应该读取命令的该第三数据串传送给该主机系统。
23.根据权利要求17所述的存储器储存装置,其中当该缓冲存储器中未存有该响应数据单元时,该存储器控制器判断对应来自于该主机系统的一轮询命令的一读取地址是否为该存取单位的倍数,
其中当对应该轮询命令的该读取地址非为该存取单位的倍数时,该存储器控制器传送一第二数据串给该主机系统以响应该轮询命令,其中该第二数据串的每个位元皆为零,
其中当对应该轮询命令的该读取地址为该存取单位的倍数时,该存储器控制器判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中存储有该响应数据单元时,该存储器控制器将存储于该缓冲存储器中的该响应数据单元传送给该主机系统,
其中当该缓冲存储器中未存储有该响应数据单元时,该存储器控制器传送该第二数据串给该主机系统以响应该轮询命令。
24.一种存储器储存装置,包括:
一连接器,用以耦接至一主机系统;
一可复写式非易失性存储器模块;
一智能卡芯片;以及
一存储器控制器,耦接至该连接器、该可复写式非易失性存储器模块与该智能卡芯片,并且具有一缓冲存储器,
其中该存储器控制器为该可复写式非易失性存储器模块配置多个逻辑块地址,其中该些逻辑块地址之中的多个特定逻辑块地址被用以存储一特定文件,
其中当从该智能卡芯片中接收到一响应数据单元时,该存储器控制器将该响应数据单元存储在该缓冲存储器中,
其中该存储器控制器从该主机系统中接收一读取命令并且判断对应该读取命令的一起始读取地址是否属于该些特定逻辑块地址的其中之一,
其中当对应该读取命令的该起始读取地址属于该些特定逻辑块地址的其中之一时,该存储器控制器判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中未存有该响应数据单元时,该存储器控制器判断对应来自于该主机系统的一轮询命令的一读取地址是否为一存取单位的倍数,
其中当对应该轮询命令的该读取地址非为该存取单位的倍数时,该存储器控制器传送一第二数据串给该主机系统以响应该轮询命令,其中该第二数据串的每个位元皆为零,
其中当对应该轮询命令的该读取地址为该存取单位的倍数时,该存储器控制器判断该缓冲存储器中是否存储有该响应数据单元,
其中当该缓冲存储器中存储有该响应数据单元时,该存储器控制器将存储于该缓冲存储器中的该响应数据单元传送给该主机系统,
其中当该缓冲存储器中未存储有该响应数据单元时,该存储器控制器传送该第二数据串给该主机系统以响应该轮询命令。
25.根据权利要求24所述的存储器储存装置,
其中当对应该读取命令的该逻辑块地址不属于该些特定逻辑块地址的其中之一时,该存储器控制器根据对应该读取命令的该起始读取地址从该可复写式非易失性存储器模块中读取对应该读取命令的一第三数据串并且将对应该读取命令的该第三数据串传送给该主机系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110195662.5A CN102880423B (zh) | 2011-07-13 | 2011-07-13 | 数据串分派与传送方法、存储器控制器与存储器储存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110195662.5A CN102880423B (zh) | 2011-07-13 | 2011-07-13 | 数据串分派与传送方法、存储器控制器与存储器储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102880423A CN102880423A (zh) | 2013-01-16 |
CN102880423B true CN102880423B (zh) | 2015-08-19 |
Family
ID=47481772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110195662.5A Active CN102880423B (zh) | 2011-07-13 | 2011-07-13 | 数据串分派与传送方法、存储器控制器与存储器储存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102880423B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526883A (zh) * | 2008-03-03 | 2009-09-09 | 群联电子股份有限公司 | 数据流传送分派方法、执行此方法的系统及其控制器 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8812756B2 (en) * | 2008-06-13 | 2014-08-19 | Phison Electronics Corp. | Method of dispatching and transmitting data streams, memory controller and storage apparatus |
-
2011
- 2011-07-13 CN CN201110195662.5A patent/CN102880423B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101526883A (zh) * | 2008-03-03 | 2009-09-09 | 群联电子股份有限公司 | 数据流传送分派方法、执行此方法的系统及其控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN102880423A (zh) | 2013-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI472927B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
CN101266829B (zh) | 存储卡、包含存储卡的存储系统及存储卡的操作方法 | |
US9043549B2 (en) | Memory storage apparatus, memory controller, and method for transmitting and identifying data stream | |
US8954705B2 (en) | Memory space management method and memory controller and memory storage device and memory storage using the same | |
CN101576853B (zh) | 数据存取方法、使用此方法的控制器与存储系统 | |
TWI454912B (zh) | 資料處理方法、記憶體控制器與記憶體儲存裝置 | |
TWI451248B (zh) | 資料保護方法、記憶體控制器與記憶體儲存裝置 | |
US9772937B2 (en) | Data processing method, memory controller and memory storage apparatus | |
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN110244907A (zh) | 存储器系统及该存储器系统的操作方法 | |
US8812756B2 (en) | Method of dispatching and transmitting data streams, memory controller and storage apparatus | |
US8775760B2 (en) | Modifying a host interface setting for a non-volatile memory module | |
US9032135B2 (en) | Data protecting method, memory controller and memory storage device using the same | |
CN110473582A (zh) | 存储器系统及其操作方法 | |
CN106372011B (zh) | 用于pcie ssd控制器的高性能主机队列监控器 | |
TWI430104B (zh) | 資料串分派與傳送方法、記憶體控制器與記憶體儲存裝置 | |
CN103218300B (zh) | 数据处理方法、存储器控制器与存储器储存装置 | |
CN103218319B (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
CN102375698B (zh) | 数据串分派与传送方法、存储器控制器与存储器储存装置 | |
CN102880423B (zh) | 数据串分派与传送方法、存储器控制器与存储器储存装置 | |
CN102650971B (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN103870209A (zh) | 工作模式切换方法、存储器控制器与存储器储存装置 | |
CN102148054A (zh) | 闪存储存系统及其控制器与防数据篡改方法 | |
CN102591738A (zh) | 数据管理方法、存储器控制器与嵌入式存储器储存装置 | |
CN103870408A (zh) | 数据处理方法、存储器控制器与存储器储存装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |