掌桥专利:专业的专利平台
掌桥专利
首页

用于利用减少的存储器占用来提高吞吐量的安全数字(SD)直接命令

文献发布时间:2023-06-19 11:55:48


用于利用减少的存储器占用来提高吞吐量的安全数字(SD)直接命令

技术领域

本专利申请要求于2018年11月29日提交的、标题为“SECURE DIGITAL(SD)DIRECTCOMMAND FOR IMPROVING THROUGHPUT WITH A REDUCED MEMORY FOOTPRINT”的非临时申请号16/204969的优先权,其被转让给本发明的受让人并且在此通过引用明确地并入本文。

本公开总体上涉及包含集成电路(IC)的装置。更具体地,本公开的各方面涉及安全数字(SD)直接命令的非常规用途,以用于利用减少的存储器占用来提高吞吐量。

背景技术

各种类型的通信链路和通信协议用于互连设备并且允许互连的设备彼此通信。通信链路使用不同的方法以用于控制互连设备之间的指令流和数据。例如,一个设备可以作为通信链路的主设备操作,而其他设备可以作为通信链路上的从设备操作。在该主设备/从设备配置中,主设备在通信链路上发出命令,以允许从设备进行通信。如果特定的从设备未接收到适当的命令,则该设备不在通信链路上传送。因此,单个主设备控制命令和数据在通信链路上的流动。

用于与客户端设备通信的特定系统由安全数字(SD)输入/输出(SDIO)协议提供。SDIO是一种有用的系统,用于与计算机系统中的客户端设备进行双向通信。SDIO依靠SDIO主机与个人计算机(PC)或其他移动计算设备中的客户端设备进行通信。SDIO主机作为SDIO主设备操作,并且控制连接到SDIO主机的其他SDIO从设备。数据流由SDIO主机控制和监测。

SDIO协议完全由主机/主设备驱动。根据SDIO协议操作的从设备不能发起任何数据传输,这是因为这些从设备仅限于向主机/主设备发出中断。来自从设备的通信的这种缺乏使用于由主机和客户端设备驱动器进行数据缓冲的最佳存储器分配变得复杂。因此,期望提供一种系统,该系统用于允许从设备和SDIO主机/主设备之间的通信,以使用减少的存储器占用来提高吞吐量。

发明内容

描述了一种提高安全数字(SD)总线的吞吐量的方法。方法包括:在通过SD总线的数据线进行数据传输期间,利用第一SD直接命令,通过SD主机和SD客户端之间的SD总线的命令(CMD)线来访问读取元数据。方法还包括:利用第二SD直接命令,通过SD总线的数据线从SD客户端对读取分组进行读取。方法还包括:将读取分组存储在根据读取元数据分配的主机缓冲器中。

描述了一种提高安全数字(SD)总线的吞吐量的方法。方法包括:在通过SD总线的数据线进行分组传输期间,从主机请求队列拉取写入元数据,写入元数据包括请求标识(ID)和来自SD主机的写入数据分组的块计数。方法还包括:由SD客户端,根据由写入元数据指示的写入数据分组的块计数,来分配客户端缓冲器。方法还包括:将响应元数据推送到主机请求队列(HRQ)中,响应元数据至少包括请求ID。

描述了一种装置,该装置被配置为提高安全数字(SD)总线的吞吐量。装置包括存储器,并且包括耦合到存储器的处理器。处理器被配置为:在通过SD总线的数据线进行数据传输期间,利用第一SD直接命令,通过SD主机和SD客户端之间的SD总线的命令(CMD)线来访问读取元数据。处理器还被配置为:利用第二SD直接命令,通过SD总线的数据线来从SD客户端对读取分组进行读取。处理器还被配置为:将读取分组存储在根据读取元数据分配的主机缓冲器中。

描述了一种非暂态计算机可读介质,其上记录有用于提高安全数字(SD)总线的吞吐量的程序代码。程序代码由处理器执行。计算机可读介质包括程序代码,该程序代码用于在通过SD总线的数据线进行数据传输期间,利用第一SD直接命令,通过SD主机和SD客户端之间的SD总线的命令(CMD)线来访问读取元数据。计算机可读介质还包括程序代码,该程序代码用于利用第二SD直接命令,通过SD总线的数据线从SD客户端对读取分组进行读取。计算机可读介质还包括程序代码,该程序代码用于将读取分组存储在根据读取元数据分配的主机缓冲器中。

这已经较宽泛地概述了本公开的特征和技术优势以便下面的详细描述可以被更好地理解。本公开的附加特征和优点将在下面被描述。本领域技术人员应当理解,本公开可以容易地被用作修改或设计用于实施与本公开相同的目的的其他结构的基础。本领域技术人员还应当认识到,这种等效构造并不脱离所附权利要求中阐述的本公开的教导。被认为是本公开的特性的新颖特征在其组织和操作方法两方面连同进一步的目的和优点在结合附图来考虑以下描述时将被更好地理解。然而,要清楚理解的是,仅出于图示和描述目的而提供附图中的每个附图,并且不旨在作为对本公开的限定的定义。

附图说明

为了更完整地理解本公开,现在参考结合附图进行的以下描述。

图1图示了根据本公开的某些方面的、片上系统(SOC)的示例实现,该片上系统(SOC)包括连通性模块。

图2是图示根据本公开的方面的、信号引脚的示例实现,信号引脚用于使安全数字(SD)主机以主机/从设备SD输入/输出(SDIO)配置可通信地耦合到SD从设备。

图3进一步图示了根据本公开的方面的、图2的主机/从设备SDIO配置。

图4是图示了根据本公开的方面的、提高通过安全数字(SD)总线接口的接收路径吞吐量的方法的流程图。

图5是图示了根据本公开的方面的、提高通过安全数字(SD)总线的传送路径吞吐量的方法的流程图。

图6是示出无线通信系统的框图,在该无线通信系统中可以有利地采用本公开的配置。

具体实施方式

以下结合附图阐述的详细描述旨在作为各种配置的描述,而不旨在表示可以实践本文所描述的概念的仅有配置。详细描述包括具体细节以便提供对各种概念的透彻理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实践这些概念。在一些实例中,以框图形式示出公知的结构和组件以避免模糊这种概念。

基于本教导,本领域技术人员应当理解,本公开的范围旨在覆盖本公开的任何方面,不论其是与本公开的任何其他方面相独立地还是组合地实现的。例如,可以使用所阐述的任何数目的方面来实现装置或实践方法。另外,本公开的范围旨在覆盖使用作为所阐述的本公开的各个方面的补充或者与之不同的其他结构、功能性,或者结构和功能性来实践的这种装置或方法。应当理解,所公开的本公开的任何方面可以由权利要求的一个或多个元素来实施。

如本文所述,术语“和/或”的使用旨在表示“包括性或”,术语“或”的使用旨在表示“排除性或”。词语“示例性”在本文中用来表示“用作示例、实例或说明”。本文中被描述为“示例性”的任何方面不必被解释为比其他方面优选或有利。

尽管本文描述了特定方面,但这些方面的众多变化和置换落在本公开的范围之内。虽然提到了优选方面的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。相反,本公开的各方面旨在能宽泛地应用于不同的技术、系统配置、网络和协议,其中一些作为示例在附图以及以下对优选方面的描述中被说明。详细描述和附图仅仅是本公开的说明而非限制,本公开的范围由所附权利要求及其等同物来定义。

各种类型的通信链路和通信协议用于互连设备并且允许互连的设备彼此通信。通过安全数字(SD)输入/输出(SDIO)协议提供了用于与客户端设备通信的特定系统。SDIO是一种有用的系统,用于与计算机系统内的客户端设备进行主机发起的双向通信。SDIO依靠SDIO主机来与个人计算机(PC)或其他移动计算设备内的客户端设备通信。SDIO主机作为SDIO主设备操作,并且控制连接到SDIO主机的其他SDIO从设备。数据流由SDIO主机控制和监测。

SDIO协议完全由主机/主设备驱动。根据SDIO协议操作的从设备不能在SD总线上发起数据传输,该SD总线将从设备和主机/主设备可通信地耦合。相反,这些从设备仅限于向主机/主设备发出中断。从设备的数据通信的发起的这种缺乏使客户端设备驱动器进行最佳存储器分配复杂化,并且对数据传输吞吐量产生负面影响。因此,期望提供一种系统,以允许在从设备与SDIO主机/主设备之间进行信息交换,以提高SD总线上的吞吐量,同时使用减少的存储器占用。

本公开的各方面涉及安全数字(SD)直接命令的一种非常规用途,以利用减少的存储器占用来提高吞吐量。在本公开的一个方面,SD直接命令用于与SD主设备和SD从设备之间的数据通信并行地在SD主设备和SD从设备之间通信元数据。该元数据可以包括关于SD主设备和SD从设备之间的即将到来的传送数据的数据。元数据还可以包括关于SD主设备和SD从设备之间的即将到来的读取数据的数据。当前,除了ABORT命令之外,普通的SD主机驱动器不允许在SD总线的命令和数据线上并行发出直接命令。在本公开的这个方面,普通SD主机驱动器被修改,以通过SD总线的命令线和数据线支持并行SD直接命令。

图1图示了根据本公开的各方面的主机片上系统(SOC)100的示例实现,主机片上系统(SOC)100包括被配置为通过SD总线提供并行安全数字(SD)直接命令的连通性块110。主机SOC 100包括适于特定功能的处理块,诸如连通性块110。连通性块110可以包括第五代(5G)连通性、第四代长期演进(4G LTE)连通性、Wi-Fi连通性、USB连通性、蓝牙连通性、安全数字(SD)连通性等。

在该配置中,主机SOC 100包括支持多线程操作的各种处理单元。对于图1中所示的配置,主机SOC 100包括多核中央处理单元(CPU)102、图形处理器单元(GPU)104、数字信号处理器(DSP)106和神经处理器单元(NPU)108。主机SOC 100还可以包括传感器处理器114、图像信号处理器(ISP)116、可以包括全球定位系统的导航模块120和存储器118。多核CPU 102、GPU 104、DSP 106、NPU 108和多媒体引擎112支持各种功能,诸如视频、音频、图形、游戏、人工网络等。多核CPU 102的每个处理器核可以是精简指令集计算(RISC)机器、高级RISC机器(ARM)、微处理器或一些其他类型的处理器。NPU 108可以是基于ARM指令集。

在本公开的一个方面,被加载到多核CPU 102中的指令可以包括如下程序代码,该程序代码用于在通过安全数字(SD)总线的数据线进行数据传输期间,利用第一SD直接命令,通过SD主机和SD客户端之间的SD总线的命令(CMD)线来访问读取元数据。被加载到多核CPU 102中的指令还可以包括如下程序代码,该程序代码用于利用第二SD直接命令,通过SD总线的数据线从SD客户端对读取分组进行读取。另外,被加载到多核CPU 102中的指令可以包括如下程序代码,该程序代码用于将读取分组存储在根据读取元数据分配的主机缓冲器中。

图2图示根据本公开的方面的信号引脚的示例实现,该信号引脚用于使安全数字(SD)主机以主机/从设备SD输入/输出(SDIO)配置可通信地耦合到SD从设备。在该配置中,主机/主设备200可以是主机SOC 100,也可以是主机SOC 100的块,诸如连通性块110或主机SOC 100的其他类似块,包括安全数字(SD)控制器/接口210。在该示例中,主机/主设备200包括SD控制器/接口210,其被配置为通过SD总线220与客户端/从设备230(230-1,...,230-N)通信。

SD总线220根据SDIO协议被配置并且承载时钟(CLK)信号、SD命令(CMD)信号和数据信号(DAT[3:0])。如上所述,SDIO协议完全由主机/主设备200驱动。结果,客户端/从设备230不能发起任何数据传输。相反,客户端/从设备230限于向主机/主设备200发出中断。在操作中,主机/主设备200使用SD直接命令来控制去往/来自客户端/从设备230的数据传输以及通信。例如,主机/主设备200使用第一SD直接命令(例如,命令52(CMD52))来执行字节读取和发出中止命令。主机/主设备200使用第二SD直接命令(例如,命令53(CMD53))来执行来自/去往客户端/从设备230的突发读取和写入。

主机/主设备200通常被配置为使用用于执行读取操作和写入操作两者的CMD53命令来执行突发数据传输。在操作中,在数据传输之前,命令头从主机/主设备200被通信到目标客户端/从设备230中的一个客户端/从设备。命令头通常指示分组数据大小,并且紧跟有分组数据。从主机/主设备200到客户端/从设备230的数据流可以被称为传送方向。相反,从客户端/从设备230到主机/主设备200的数据流可以被称为接收方向。

在传送方向上,客户端/从设备230接收来自主机/主设备200的传入数据的能力取决于客户端/从设备230的目标的动态存储器场景。特别地,在不知道传入数据的大小的情况下,客户端/从设备230的客户端设备驱动器被迫对客户端/从设备230使用静态存储器分配,以避免数据传输吞吐量损失。客户端/从设备230的缓冲器空间被指定为容纳来自主机/主设备200的传入分组数据。不幸的是,一旦缓冲器空间被传入分组数据填充,客户端/从设备230就被配置为分配另一个(例如,下一个)缓冲器空间。当后续命令头指示来自主机/主设备200的下一个分组时,下一个缓冲器空间被分配,而先前分配的缓冲器空间正被软件消耗。在操作中,所分配的缓冲器空间被指定为容纳针对给定系统的最少两个最大大小的数据分组(例如,对于块大小为五百一十二(512)字节的系统,单个分组可以最大为二百五十六(256)千字节(KB),因此为缓冲器空间分配指定512千字节(KB))。不幸的是,不能保证传入分组具有为缓冲器分配指定的最大大小。因此,维持最大缓冲器分配大小是系统中可用的有限存储器资源的非最佳使用。该非最佳使用会产生不利影响,包括降低系统速度和增加系统成本。

根据SDIO协议,在传送方向上,客户端/从设备230不能传达其接受传入传送数据的当前能力。客户端/从设备230接受传入的传送数据的能力取决于它们的动态存储器场景。在软件不使用静态存储器分配的情况下,存在一种备选方法,其中在当前操作中,在从命令头确定分组数据大小之后,客户端/从设备230尝试通过断言流控制来延迟数据传输,直到预先确定量的缓冲器空间由客户端设备驱动器分配为止。用于分配缓冲器空间的该延迟导致SD总线220上的大间隙。该延迟还减小了SD总线220上的传送吞吐量。

不幸的是,在某些情况下,主机/主设备200具有针对客户端/从设备的不同大小数据分组的多个独立流。在不知道客户端/从设备的动态存储器状况的任何情况下,主机/主设备200不能智能地选择向客户端/从设备230传送独立数据分组流的有效顺序。即,用于配置客户端/从设备230的缓冲器空间的静态缓冲器管理简单,但是由于缺少来自主机/主设备200和/或客户端/从设备230的预先信息(例如,元数据)而浪费。

在接收方向上(例如,从客户端/从设备230到主机/主设备200的数据流),主机/主设备200从客户端/从设备230读取分组数据。例如,客户端/从设备230可以从另一个接口(例如,蓝牙设备和/或无线局域网(WLAN),通过连通性模块110)获取数据以传输到主机/主设备200。不幸的是,主机/主设备200没有确定从客户端/从设备230中的一个客户端/从设备读取的数据的大小的有效部件。在当前操作中,客户端/从设备230中断主机/主设备200以进行读取操作。作为响应,主机/主设备200对客户端/从设备230执行几次读取,以在发起通过SD总线220的数据读取事务之前,从客户端/从设备230中的一个客户端/从设备收集指定的信息。这些在执行突发数据传输之前的在SD总线220上的额外事务降低了通过SD总线220的读取数据吞吐量。

用于减少传送路径吞吐量损失的一个选项是由客户端/从设备230的客户端设备驱动器进行动态存储器分配。该解决方案通过使用针对客户端/从设备230的按需存储器分配,来提供较小的存储器占用。在该选项中,客户端/从设备230维持描述符的队列并且维持小数目的缓冲器的池,每个缓冲器具有固定的小尺寸(例如512字节),以用于存储从主机/主设备200传送的分组数据。一旦从主机/主设备200传送数据分组,用于目标客户端/从设备230中的一个客户端/从设备的客户端设备驱动器就从可用存储器分配目标缓冲器。如果传入的数据大于缓冲器,则客户端驱动器将继续从池中分配缓冲器。这解决了由于最大大小的缓冲器的静态分配而导致的宝贵存储器利用不足的问题。不幸的是,如果分组数据较大,池中所有固定大小的缓冲器可能被利用,并且仍然需要更多的缓冲器空间。这被称为缓冲器用尽(OOB)状况,并且它将持续,直到客户端设备驱动器处理了传输的数据并且将缓冲器释放到由目标客户端/从设备维持的硬件为止。备选地,OOB状况将持续,直到客户端设备驱动器通过从系统存储器分配更多存储器来在池中添加附加缓冲器为止。如果客户端设备驱动器被告知传入分组数据的缓冲器规格,而不是在响应模式下操作,则可以避免由OOB描述符场景引起的延迟。

另一个选项涉及客户端/从设备230维持用于不同存储通道(例如,直接存储器访问(DMA)通道)的缓冲器状态信息。客户端/从设备230可以通过向主机/主设备200发出中断,来将该缓冲器状态信息传达给主机/主设备200。主机/主设备200可以使用第二SDIO直接命令(例如,CMD53),通过数据线(例如,DAT[3:0]),从客户端/从设备230读取元数据(例如,缓冲器状态信息)。然后,主机/主设备200可以通过了解客户端/从设备230的缓冲器状态信息(例如,元数据)来做出用于分组传输的智能调度决策。

然而,该选项基于写入调度过程而引入了显著的延迟,写入调度过程用于通过数据线(例如,DAT[3:0])从客户端/从设备230获取有限量的缓冲器状态元数据,写入调度过程在每个数据分组写入之前被执行。该写入调度过程包括从客户端/从设备230到主机/主设备200的硬件的中断,随后是主机处理器的中断。然后,主机处理器启动软件线程激活,以将CMD53读取命令推送到主机/主设备200的硬件,并且执行CMD53写入操作以获取缓冲器状态元数据。该写入调度过程还包括:将缓冲器状态元数据提供给设备驱动器,做出写入调度决定,以及将CMD53写入命令推送到主机/主设备200的硬件,以将分组数据传输到客户端/从设备230。

写入调度过程引入了显著的延迟。这在SD总线220上发起数据传输之前,产生大约三百(300)微秒(μs)到三百五十(350)微秒(μs)的延迟。例如,对于六十四(64)千字节(KB)的分组(该分组需要0.7毫秒来在SD总线220上进行完整的数据传输),因此,该附加的300微秒-350微秒导致显著的(例如35%到50%)的吞吐量损失。对于256KB的分组,吞吐量损失减少,但不可忽略(例如13%)。

减少接收路径吞吐量损失是一个重大问题,因为主机/主设备200在读取操作之前不知道读取分组数据的大小。为了解决该问题,客户端/从设备230中断主机以提供元数据,该元数据针对主机/主设备200从客户端/从设备230中的一个客户端/从设备拉取的每个读取分组。然而,该选项引入了显著的延迟,来通过数据线(例如,DAT[3:0])从客户端/从设备230获取有限量的读取状态元数据,这在每个数据分组读取操作之前被执行。该元数据获取过程包括从客户端/从设备230到主机/主设备200的硬件的中断,随后是主机处理器的中断。然后,主机处理器启动软件线程激活,用于将CMD53读取命令推送到主机/主设备200的硬件并且执行CMD53读取操作。该元数据获取过程还包括将读取状态元数据提供给设备驱动器,设备驱动器分配缓冲器,并且将CMD53读取命令推送到主机/主设备200的硬件。

所述的元数据获取过程引入了显著的延迟。这在SD总线220上的数据传输被发起之前,也产生大约三百(300)微秒(μs)到三百五十(350)微秒(μs)的延迟。例如,六十四(64)千字节(KB)的分组导致显著(例如35%至50%)的吞吐量损失。该吞吐量损失是由于元数据获取需要附加的300微秒-350微秒,这超过并且高于通过SD总线220进行读取数据分组传输所需的0.7毫秒。对于256KB的分组,吞吐量损失也不可忽略(例如13%)。元数据获取过程导致的存储器占用对于接收路径(例如,从客户端/从设备230到主机/主设备200的数据流)而言不是问题,这是因为主机/主设备200在SD总线220上发起数据传输之前,了解了读取的数据大小。

如上所述,SDIO协议为每个分组指定最大数据大小(例如,每个分组256KB)。用于支持写入和/或读取256KB分组的元数据(例如,传送路径元数据和/或接收路径元数据)大约为一到二(1-2)字节。元数据包括用于数据传输的块(例如512字节/块)的数目(9位)和直接存储器访问(DMA)通道号(2位-4位)。使用CMD53读取/写入命令来提供块数据流,以传输少量(例如1字节-2字节)的元数据是SD总线220上资源的重大浪费。

然而,SDIO协议提供CMD52命令以仅使用SD总线220的命令(CMD)引脚,来在主机/主设备200与客户端/从设备230之间进行一个字节的处理。注意,SDIO协议通常禁止CMD52命令与CMD53命令在SD总线220上同时有效(例如,并行执行)。特别地,当CMD53命令在SD总线220上有效时,标准SD主机驱动器(例如,Linux标准SD主机驱动器)阻挡其他命令在SD总线220上有效。通常,在有效的CMD53命令期间,仅中止命令被解除阻挡。该终止命令可以与CMD53命令同时被发送以进行特殊处理。

根据本公开,根据需要,主机/主设备200的SD主机驱动器被修改,以使得CMD52命令能够与在SD总线220上的有效的CMD53命令同时激活。SD总线220上的CMD52和CMD53命令的该同时激活符合SDIO协议的SD规范。在本公开的这个方面,主机/主设备200的SD主机驱动器被提供有两个独立的通道,用于与客户端/从设备230通信。如所描述的,元通道可以指代CMD52通道,并且数据通道可以指代CMD53通道。

在操作中,通过发出CMD52命令在元通道上传输一个字节的元数据花费大约一百九十二(192)个时钟周期来完成。相比之下,用于传输一个数据块(例如512字节)的CMD53命令在SD总线220上花费大约一千二百三十二(1232)个时钟周期来进行端到端传输。1232个时钟周期提供了足够的时间以用于成功完成如下:通过命令(CMD)线的两个CMD52命令并且与通过SD总线220的数据线(DAT[3:0])的CMD53数据传输命令并行。例如,如图3中所示,两个CMD52命令使能用于在主机/主设备200和客户端/从设备230之间通信的元通道,以使得能够有效地使用SD总线220的数据通道。

图3示出了根据本公开的方面的、主机/从设备安全数字(SD)输入/输出(SDIO)配置300,其进一步图示了图2的主机/从设备SDIO配置。代表性地,SDIO客户端接口330包括主机请求队列(HRQ)340和客户端请求队列(CRQ)350。SDIO客户端接口330还包括第一寄存器空间(功能1寄存器空间)320和第二寄存器空间(AHB(高级高性能总线)寄存器空间)360。SD主机硬件310(例如SD卡控制器)可以访问功能1寄存器空间320,并且客户端硬件370(例如本地主机处理器)可以访问AHB寄存器空间360。主机请求队列340(HRQ)和客户端请求队列350(CRQ)提供用于在SD主机硬件310和客户端硬件370之间交换元数据的中介。

主机/从设备SDIO配置300可以操作以执行如下主机到客户端的传输(例如,传送路径数据流)。当SD主机硬件310(例如,主机/主设备200)具有要发送到客户端硬件370(例如,客户端/从设备230)的分组时,SD主机硬件310将两个字节的条目推送到主机请求队列340上(例如,HRQ Push)。SD主机硬件310通过在例如图2的SD总线220的命令(CMD)引脚上发出两个CMD52命令,来将两个字节的条目推送到主机请求队列340上。即使SD总线220的数据引脚(例如,DAT[3:0])正忙于传输数据,也允许发出该两个CMD52命令。元数据的该两个字节的条目可以包括块计数(13位)和请求标识(ID),请求标识(ID)响应于第二CMD52而从客户端硬件370作为响应元数据被返回。

在该示例中,HRQ推送将中断(例如,请求中断)触发到客户端硬件370的中断请求队列(IRQ)引脚。作为响应,客户端设备驱动器(未示出)根据块计数来分配指定量的请求的缓冲器空间。一旦分配,客户端设备驱动器就将响应元数据推送到客户端请求队列350中(例如,CRQ TX Push)。响应元数据可以包括请求ID(4位)和直接存储器访问(DMA)通道(例如,假设4个DMA通道,则为2位)。CRQ TX Push触发带内中断,带内中断被发送到SD主机硬件310。SD主机硬件310的该带内中断不影响SD总线220的数据引脚(例如DAT[3:0])上的任何当前数据传输。

如图3中所示,SDIO中断在SD主机硬件310的数据引脚(例如DAT[1])上被发出,而不会影响SD总线220上的当前数据传输。作为响应,SD主机硬件310经由CMD52命令从客户端请求队列350拉取(例如CRQ Pull)响应元数据。基于来自HRQ条目的响应元数据(其包括请求ID和DMA通道),SD主机硬件310确定客户端设备驱动器已经供应了指定的缓冲器大小以及要被使用的DMA通道。SD主机硬件310等待在SD总线220上的当前数据传输的完成。一旦当前数据传输完成,SD主机硬件310就使用CMD53命令,在SD总线220的数据引脚(例如,DAT[3:0])上触发分组写入。最终结果是在SD总线220的数据引脚(例如DAT[3:0])上进行背对背分组数据传输。背对背数据传输在设备驱动器水平处产生接近总线水平的吞吐量。

主机/从设备SDIO配置300可以操作,以执行如下客户端到主机的传输(例如,接收路径数据流)。当客户端硬件370(例如,客户端/从设备230)具有用于SD主机硬件310(例如,主机/主设备200)的读取分组时,客户端硬件370将读取元数据的两个字节的条目推送到客户端请求队列350上(例如,CRQ RX Push)。客户端硬件370将读取元数据的该两个字节的条目推送到客户端请求队列350上,以向SD主机硬件310通知读取数据可从客户端硬件370获得。读取元数据的该两字节的条目可以包括块计数(13位)和DMA通道号(2位)。

SDIO中断在SD主机硬件310的数据引脚(例如DAT[1])上被发出,而不会影响SD总线220上的当前数据传输。作为响应,SD主机硬件310经由两个CMD52命令,从客户端请求队列350拉取条目(例如CRQ Pull)。基于CRQ条目中的读取元数据(读取元数据包括块计数和DMA通道),SD主机硬件310确定客户端硬件370具有用于SD主机硬件310拉取的读取分组。作为响应,SD主机硬件310的SD主机驱动器(基于块计数)在SD主机硬件310的存储器空间中分配主机缓冲器,并且等待SD总线220上的当前数据传输的完成。一旦当前分组数据传输完成,SD主机硬件310就使用CMD53命令在SD总线220的数据引脚(例如DAT[3:0])上触发分组读取,以从客户端硬件370拉取读取分组。最终结果也是在SD总线220的数据引脚(例如DAT[3:0])上进行背对背分组数据传输。背对背数据传输还在设备驱动器水平处产生接近总线水平的吞吐量。

在没有上述元数据传输解决方案的情况下,主机和客户端之间的带内通信被执行以通信元数据。但是,这种带内通信将延时引入到数据分组传输中,导致SD总线220上的吞吐量损失。相反,通过SD总线220的CMD52命令和CMD53命令的同时激活提供可观的吞吐量增益(例如,43%),从而以SD协议开销接近可能的最大吞吐量。

图4是图示了根据本公开的方面的、提高通过安全数字(SD)总线接口的接收路径吞吐量的方法的流程图。方法400在框402处开始,其中在通过SD总线的数据线进行数据传输期间,利用第一SD直接命令,通过SD主机和SD客户端之间的SD总线的命令(CMD)线来访问读取元数据。例如,如图3中所示,SD主机硬件310经由CMD52命令从客户端请求队列350拉取条目(例如,CRQ Pull),以从客户端请求队列350取回读取元数据。在该示例中,从客户端请求队列350拉取读取元数据由在SD主机硬件310的数据引脚(例如DAT[1])上发出的SDIO中断触发。该中断不影响SD总线220上的当前数据传输。

再次参考图4,在框404处,在主机存储器中分配主机缓冲器,其中主机缓冲器具有与读取元数据中的缓冲器大小信息相对应的大小。在框406处,利用第二SD直接命令,通过SD总线的数据线从SD客户端对读取分组进行读取。例如,图3图示了SD主机硬件310使用CMD53命令在SD总线220的数据引脚(例如,DAT[3:0])上执行分组读取,以从客户端硬件370提取读取分组。当读取分组被存储在根据读取元数据分配的主机缓冲器中时,该过程在框408处完成。例如,在图3中,SD主机硬件310将读取分组存储在根据读取元数据分配的主机缓冲器中。

图5是图示根据本公开的各方面的、提高通过安全数字(SD)总线上的传送路径吞吐量的方法的流程图。方法500在框502处开始,其中在通过SD总线的数据线进行分组传输期间,由SD客户端从主机请求队列(HRQ)拉取写入元数据。写入元数据包括请求标识(ID)和来自SD主机的写入数据分组的块计数。例如,如图3中所示,当SD主机硬件310具有写入分组要发送给客户端硬件370时,SD主机硬件310将两个字节的条目推入主机请求队列340上(例如HRQ Push),以通信写入元数据。

再次参考图5,在框504处,SD客户端根据由写入元数据指示的写入数据分组的块计数来分配客户端缓冲器。例如,在图3中,HRQ Push将中断(例如,请求中断)触发到客户端硬件370的中断请求队列(IRQ)引脚。作为响应,客户端设备驱动器根据块计数来分配指定量的请求缓冲器空间。在框506处,SD主机通过SD总线将写入数据分组写到SD客户端。在框508处,响应元数据被推送到客户端请求队列(CRQ)中。响应元数据至少包括请求ID。如图3中所示,一旦指定量的缓冲器空间被分配,客户端设备驱动器就将响应元数据推送到客户端请求队列350中(例如,CRQ TX Push)。

图6是示出示例性无线通信系统600的框图,可以在其中有利地采用本公开的配置。出于说明的目的,图6示出了三个远程单元620、630和650以及两个基站640。应当理解,无线通信系统可以具有更多的远程单元和基站。远程单元620、630和650包括IC设备625A、625B和625C,其包括所公开的SD总线接口。应当理解,任何包含IC的设备也可以包括所公开的SD总线接口,包括基站、交换设备和网络装备。图6示出了从基站640到远程单元620、630和650的前向链路信号680,以及从远程单元620、630和650到基站640的反向链路信号690。

在图6中,远程单元620被示为移动电话,远程单元630被示为便携式计算机,并且远程单元650被示为无线本地环路系统中的固定位置远程单元。例如,远程单元可以是移动电话、手持式个人通信系统(PCS)单元、诸如个人数据助理的便携式数据单元、GPS使能设备、导航设备、机顶盒、音乐播放器、视频播放器、娱乐单元、固定位置数据单元(诸如仪表读数设备)或存储或取回数据或计算机指令的任何其他设备,或其任意组合。例如,包括低功率存储器子系统的远程单元可以被集成在交通工具控制系统、服务器计算系统或指定关键数据完整性的其他类似系统内。尽管图6图示了包括所公开的SD总线接口的IC设备625A、625B和625C,但是本公开不限于这些示例性示出的单元。本公开的方面可以适当地被用于包括SD总线接口的任何设备中。

对于固件和/或软件实现,可以利用执行所述功能的模块(例如,过程、功能等)来实现方法。有形地实施指令的任何机器可读介质可以用于实现本文所述的方法。例如,软件代码可以被存储在存储器中并且被处理器单元执行。可以在处理器单元内或者在处理器单元外实现存储器。如本文所使用的,术语“存储器”是指任何类型的长期、短期、易失性、非易失性或者其他存储器,并且不限于任何特定类型的存储器或存储器的数目或者其上存储存储器的介质类型。

如果以固件和/或软件被实现,则功能可以存储为非暂态计算机可读介质上的一个或多个指令或代码。示例包括用数据结构编码的计算机可读介质以及用计算机程序编码的计算机可读介质。计算机可读介质包括物理计算机存储介质。存储介质可以是可被计算机访问的可用介质。通过示例但不限制,这种计算机可读介质可以包括:RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁性存储设备,或者可以用于以指令或数据结构的形式存储期望程序代码且可以被计算机访问的其他介质;磁盘和光盘,如本文所使用的,包括压缩盘(CD)、激光盘、光谱、数字通用盘(DVD)和蓝光盘,其中磁盘通常磁性地再生数据,而光谱利用激光光学地再生数据。上述的组合也可以包括在计算机可读介质的范围内。

除了在计算机可读介质上存储之外,指令和/或数据可以作为信号在通信装置中包括的传输介质上提供。例如,通信装置可以包括收发器,其具有指示指令和数据的信号。指令和数据被配置为使得一个或多个处理器实现权利要求所概括的功能。

尽管已经详细描述了本公开及其优点,但应当理解,在不背离由所附权利要求限定的本公开的技术的情况下,可以做出各种改变、替换和修改。例如,诸如“上方”和“下方”的相对数据相对于衬底或电子设备来使用。当然,如果衬底或电子设备被反转,则上方变为下方,反之亦然。此外,如果侧向定向,则上方和下方可以表示衬底或电子设备的侧面。此外,本申请的范围不限于说明书中描述的处理、机器、制造、组成物质、装置、方法和步骤的特定配置。本领域技术人员将容易从本公开理解,当前存在或者稍后开发的与本文所述对应配置相比执行基本相同的功能或实现基本相同结果的处理、机器、制造、组成物质、装置、方法和步骤可以根据本公开来利用。相应地,所附权利要求用于包括在这种处理、机器、制造、组成物质、装置、方法和步骤的范围内。

本领域技术人员还应理解,结合本公开描述的各种说明性逻辑框、模块、电路和算法步骤可以实现为电子硬件、计算机软件或它们的组合。为了清楚地示出硬件和软件的这种可交换性,上面已经根据它们的功能一般性地描述了各种说明性部件、框、模块、电路和步骤。这种功能被实现为硬件还是软件取决于具体应用和对总体系统施加的设计约束。本领域技术人员可以各种方式针对每个具体应用实现所述功能,但是这种实现判定不应当解释为背离本公开的范围。

结合本公开描述的各种说明性逻辑框、模块和电路可以利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其他可编程逻辑设备、分立门或晶体管逻辑、分立硬件部件或者被设计为执行本文所述功能的任何它们的组合来实现或执行。通用处理器可以是微处理器,但是备选地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器还可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、与DSP核联合的一个或多个微处理器,或者任何其他这样的配置。

结合本公开描述的方法步骤或算法可以直接以硬件、由处理器执行的软件模块或者二者的组合来实施。软件模块可以驻留在RAM、闪存、ROM、EPROM、EEPROM、寄存器、硬盘、可移除盘、CD-ROM,或本领域已知的任何其他形式的存储介质中。示例性存储介质耦合至处理器,使得处理器可以从存储介质读取信息或者向存储介质写入信息。备选地,存储介质可以集成到处理器中。处理器和存储介质可以驻留在ASIC中。ASIC可以驻留在用户终端中。备选地,处理器和存储介质可以作为用户终端中的分立部件。

在一个或多个示例性设计中,所述功能可以硬件、软件、固件或任何它们的组合来实现。如果以软件实现,则功能可以在计算机可读介质上存储或传输为一个或多个指令或代码。计算机可读介质包括计算机存储介质和通信介质,包括利于将计算机程序从一个位置传送到另一位置的任何介质。存储介质可以是可被通用或专用计算机访问的任何可用介质。通过示例但不限制,这种计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或者其他磁性存储设备,或者可以用于以指令或数据结构的形式承载或存储特定程序代码且可以被通用或专用计算机或通用或专用处理器访问的任何其他介质。此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双钮线、数字用户线(DSL)或者无线技术(诸如红外、无线电和微波)从网站、服务器或其他远程源传输软件,则同轴电缆、光纤电缆、双钮线、DSL或者无线技术(诸如红外、无线电和微波)包括在介质的定义中。如本文所使用的,磁盘和光谱包括压缩盘(CD)、激光盘、光盘、数字通用盘(DVD)和蓝牙盘,其中磁盘通常磁性地再生数据,而光盘利用激光器光学地再生数据。上述的组合也包括在计算机可读介质的范围内。

提供了前面的描述以使本领域技术人员能够实践本文描述的各个方面。对这些方面的各种修改对于本领域技术人员来说是容易的,并且本文限定的一般原理可应用于其他方面。因此,权利要求不限制于本文所示的方面,而是总体范围与权利要求的语言一致,其中除非明确指定,否则对单个元件的指定不用于表示“一个和仅一个”,而是“一个或多个”。除非另有明确指定,否则术语“一些”是指一个或多个。提到项目列表中的“至少一个”的措辞表示这些项目的任何组合,包括单个组成。作为一个示例,“a、b或c中的至少一个”用于覆盖:a;b;c;a和b;a和c;以及a、b和c。本领域技术人员已知或者稍后知道的与本公开描述的各个方面的元件等效的所有结构和功能通过参考明确并入本文,并且用于被权利要求所包含。此外,无论权利要求书中是否明确陈述了本公开,这里公开的任何内容均不得专门针对公众。除非使用措辞“用于…的装置”明确表示元件或者在方法权利要求的请求下使用措辞“用于…的步骤”引用元件,否则没有权利要求元件在35U.S.C.§112、第六段的规定下被构建。

相关技术
  • 用于利用减少的存储器占用来提高吞吐量的安全数字(SD)直接命令
  • 用于存取安全数字SD卡的方法及SD卡的控制器
技术分类

06120113106585