CN102124525B - 虚拟存储器接口 - Google Patents

虚拟存储器接口 Download PDF

Info

Publication number
CN102124525B
CN102124525B CN200980106735.XA CN200980106735A CN102124525B CN 102124525 B CN102124525 B CN 102124525B CN 200980106735 A CN200980106735 A CN 200980106735A CN 102124525 B CN102124525 B CN 102124525B
Authority
CN
China
Prior art keywords
address
physical address
buffer
impact damper
memory
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
CN200980106735.XA
Other languages
English (en)
Other versions
CN102124525A (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.)
Microchip Technology Inc
Original Assignee
Microchip Technology Inc
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 Microchip Technology Inc filed Critical Microchip Technology Inc
Publication of CN102124525A publication Critical patent/CN102124525A/zh
Application granted granted Critical
Publication of CN102124525B publication Critical patent/CN102124525B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

本文中描述的实施例提供对可分散在存储器(12)中的一组缓冲器(22到26)的个别数据存储位置(16到20)的随机存取。这些实施例提供虚拟存储器接口(14),所述虚拟存储器接口(14)将平面存储器线性寻址空间中的虚拟地址作为索引应用到根据所述组缓冲器(22到26)排序成序列的物理存储器地址中。以此方式,这些实施例使得装置(例如,处理器)能够在不必执行任何存储器分段或分页过程的情况下直接并按顺序地存取经分片数据项(例如,包)的所有分散的物理存储器位置。在一些实施例中,这些存取包括对所述分散的数据存储位置(16到20)的读取存取和写入存取两者。

Description

虚拟存储器接口
技术领域
本申请案一般来说涉及虚拟存储器接口,且更明确地说,涉及用于提供对可分散在存储器中的缓冲器的个别存储位置的随机存取的设备和方法。
背景技术
数据处理电子装置通常包括用于存储数据的存储器。存储器接口指定用于存取物理存储器(例如,随机存取存储器)的个别数据存储位置的协议。这些个别数据存储位置通过物理地址空间中的物理地址来索引。在一些系统中,处理器或用户过程相对于虚拟地址空间中的虚拟地址(还称为“逻辑地址”)而操作,其中必须将所述虚拟地址翻译成对应物理地址,此后才可存取物理存储器的数据存储位置。在这些系统中,虚拟地址到物理地址的翻译通常涉及从存储于存储器中的查找翻译表确定虚拟地址与物理地址之间的映射。
数据处理通常涉及将数据从源存储器移动到目的地存储器。处理器可通过从源存储器读取数据且随后将所述数据写入到目的地存储器来执行此数据传送。另一选择是,可使用直接存储器存取(DMA)引擎以在不必通过处理器或其它中间装置路由的情况下将数据直接从源存储器传送到目的地存储器。
在基本操作模式中,DMA引擎将单个相连数据块从源存储器传送到目的地存储器。在此操作模式中,处理器用源存储器中的开始地址和目的地存储器中的开始地址以及待传送数据的量来配置DMA引擎。基于此信息,DMA引擎控制相连数据从源存储器到目的地存储器的传送。
在分散集中操作模式中,DMA引擎根据由处理器指定的源存储器位置和目的地存储器位置的物理地址来传送数据。此操作模式通常用于在第一存储器的相连物理地址与第二存储器的非相连物理地址之间传送数据。举例来说,集中功能通常涉及将源存储器中的非相连数据块传送到目的地存储器中的相连区域,而分散功能通常涉及将来自源存储器的相连数据块传送到目的地存储器中的非相连块中。源存储器地址和目的地存储器地址的物理地址通常由处理器以分散集中元素(还称为“向量”)列表的形式指定,其中所述元素中的每一者含有物理存储器地址和整个数据传送中的相应段的长度。
发明内容
在一个方面,本发明的特征表现为包括存储器和直接存储器(DMA)控制器的设备。所述存储器包括可通过物理地址寻址的数据存储位置。所述直接存储器存取(DMA)控制器提供到所述存储器的虚拟存储器接口。所述DMA控制器可操作以将平面存储器线性寻址空间中的虚拟地址作为索引应用到所述物理地址的根据一组缓冲器排序的序列。
在另一方面,本发明的特征表现为包括存储器、无线收发器、逻辑和虚拟存储器接口的设备。所述存储器包括可通过物理地址寻址的数据存储位置。所述无线收发器可操作以发射和接收数据的包。所述逻辑可操作以将包数据存储于分散在所述存储器中的缓冲器中。所述逻辑还可操作以使相应缓冲器参考元素列表与所述所存储包中的每一者相关联,所述缓冲器参考元素中的每一者包括(i)指向含有所述包的数据的相应缓冲器的缓冲器指针和(ii)所述相应缓冲器的大小。所述虚拟存储器接口可操作以基于所述物理地址中的物理地址根据所述缓冲器参考元素列表中的相应缓冲器参考元素列表排序成相应序列的相应排序且基于以平面存储器线性寻址空间中的连续虚拟地址对每一所述经排序物理地址序列的相应索引而提供对所述数据存储位置中的个别数据存储位置的随机存取。
在另一方面中,本发明的特征表现为一种方法,根据所述方法提取缓冲器参考元素列表。所述缓冲器参考元素中的每一者包括(i)对应于存储器中的数据存储位置的物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。根据所述缓冲器参考元素列表将所述物理地址中的物理地址排序成序列。将平面存储器线性寻址空间中的虚拟地址作为索引应用到所述物理地址的所述序列以识别所述数据存储位置中的目标数据存储位置。相对于所述目标数据存储位置执行数据传送操作。
在另一方面中,本发明的特征表现为一种方法,根据所述方法以无线方式发射和接收数据的包。将包数据存储于分散在存储器中的缓冲器中,所述存储器包括可通过物理地址寻址的数据存储位置。使相应缓冲器参考元素列表与所述所存储包中的每一者相关联。所述缓冲器参考元素中的每一者包括(i)指向含有所述包的数据的相应缓冲器的相应缓冲器指针和(ii)所述相应缓冲器的大小。基于所述物理地址中的物理地址根据所述缓冲器参考元素列表中的相应缓冲器参考元素列表排序成相应序列的相应排序且基于以平面存储器线性寻址空间中的连续虚拟地址对每一所述经排序物理地址序列的相应索引而提供对所述数据存储位置中的个别数据存储位置的随机存取。
依据具体实施方式,包括图式和权利要求书,本发明的其它特征和优点将变得显而易见。
附图说明
图1是包括虚拟存储器接口和存储器的设备的实施例的框图。
图2是虚拟存储器介接方法的实施例的流程图。
图3是包括指向分散在存储器中的缓冲器的缓冲器指针的缓冲器参考元素列表的实施例的图解视图。
图4是平面存储器线性寻址空间的实施例与物理地址空间的实施例之间的映射的图解视图。
图5是将输入虚拟地址作为索引应用到分散在存储器中的缓冲器的数据存储位置中的示范性应用的图解视图。
图6是虚拟存储器接口的实施例的框图。
图7是响应于来自主总线装置的读取或写入请求而安装对象及其描述符的方法的实施例的流程图。
图8A是图6的虚拟存储器接口通过其处置读取请求的方法的实施例的流程图。
图8B是图6的虚拟存储器接口通过其处置写入请求的方法的实施例的流程图。
图9是形成缓冲器参考元素列表的方法的实施例的流程图。
图10是形成缓冲器参考元素列表的方法的实施例的流程图。
图11是图1中所示的设备的无线收发器芯片实施例的框图。
图12是由图11中所示的无线收发器芯片执行的虚拟存储器介接方法的实施例的流程图。
图13是图11中所示的无线收发器芯片的实施例的框图。
图14是并入有图11中所示的无线收发器芯片的无线台的实施例的框图。
具体实施方式
在具体实施方式中,相同参考编号用于识别相同元件。此外,所述图式打算以图解方式图解说明示范性实施例的主要特征。所述图式既不打算描绘实际实施例的每一特征也不打算描绘所描绘元件的相对尺寸,且所述图式并非按比例绘制。
I.术语
当在本文中同时使用时,术语“存储器”和“物理存储器”意指与由处理器或软件界定的“虚拟存储器”相反的经接线以用于读取和写入存取的实际存储器电路。
如本文中所使用,术语“物理地址”意指用于检索物理存储器的内容的地址。“物理地址空间”为物理地址的空间。
如本文中所使用,术语“虚拟地址”意指由软件、处理器或用户过程界定的虚拟地址空间中的非物理地址。取决于实施方案,虚拟地址空间可以或可以不分散在存储器中。
如本文中所使用,术语“平面存储器线性寻址空间”意指横跨整个寻址空间从基本存储器地址(通常为地址零)到最终存储器地址为线性、顺序和相连的虚拟或物理存储器寻址空间。
如本文中所使用,术语“直接存储器存取”意指能够在不必通过处理器或其它中间装置路由的情况下直接在不同存储器装置上的存储器位置之间直接传送数据。
如本文中所使用,术语“缓冲器”意指物理存储器的可包括一个或一个以上可寻址数据存储位置的区。术语“缓冲器指针”意指缓冲器的指针。所述指针通常为存储器中的缓冲器的开始物理地址。
当在本文中同时使用时,术语“处理器”和“微控制器”指代电子电路,所述电子电路通常位于单芯片上且执行包括但不限于数据处理操作、控制操作或数据处理操作和控制操作两者的操作。
当在本文中同时使用时,术语“包”和“数据包”意指经格式化以用于经由网络传输的数据块。包通常包括标头(其含有寻址和其它信息)和有效负载(例如,消息数据)。
II.概述
本文中描述的实施例提供对可分散在存储器中的一组缓冲器的个别数据存储位置的随机存取。明确地说,这些实施例提供虚拟存储器接口,所述虚拟存储器接口将平面存储器线性寻址空间中的虚拟地址作为索引应用到根据所述组缓冲器排序的物理存储器地址中。以此方式,这些实施例使得装置(例如,处理器)能够在不必执行任何存储器分段和分页过程的情况下直接并按顺序地存取经分片数据项(例如,包)的所有所述分散的物理存储器位置。在一些实施例中,这些存取包括对所述分散的数据存储位置的读取存取和写入存取两者。
这些实施例在不对存取装置施加实质额外负担的情况下提供虚拟存储器接口,借此使得资源受限装置能够随机存取分散在存储器中的缓冲器的个别数据单元。这些实施例在并入到具有显著功率、存储器和计算资源限制的嵌入式应用程序(例如,无线计算机外围装置)中时提供显著优点。举例来说,这些实施例可并入到无线收发器模块中以使得资源高度受限的总线主装置和微控制器能够在提供无线连接性中使用。以此方式,这些实施例使得使用此类总线主装置和微控制器的低成本和遗留电子装置能够在不需要显著设计修改的情况下容易地配备无线连接性。
III.介绍
图1显示包括存储器12和虚拟存储器接口14的设备10的实施例。
设备10可以是提供对存储器12的读取存取和写入存取中的至少一者的任何类型的电子装置。在一些示范性实施例中,设备10为经设计以执行一个或几个专用功能的专用计算机系统。在一些实施例中,设备10为高度适合于并入到具有显著大小、功率和成本限制的无线通信环境中的无线收发器模块,其包括但不限于手持式电子装置(例如,移动电话、无绳电话、例如快闪存储器卡和智能卡的便携式存储器、个人数字助理(PDA)、摄像机、静止图像相机、固态数字视频播放器、CD播放器、MCD播放器、游戏控制器和寻呼机)、便携式计算机(例如,膝上型计算机)、计算机外围装置(例如,输入装置,例如计算机鼠标和小键盘)以及其它嵌入式环境。除虚拟存储器接口14和存储器12以外,设备10还可包括处理器(或微控制器)和机械部件。
存储器12可以是经连线以用于读取和写入存取的任何类型的存储器。存储器12通常为包括个别可寻址数据存储位置16、18和20的随机存取存储器。在一些示范性实施方案中,个别可寻址数据存储位置16到20在大小上为一字节(即,八个位)的整数倍。在所图解说明的实施例中,所述个别可寻址数据存储位置在大小上为一个字节。在所图解说明的实施例中,数据存储位置16到20含于分散在存储器12中的一组缓冲器22、24、26中。举例来说,所述组缓冲器22到26可对应于经排序缓冲器地址(或指针)列表或一组经链接缓冲器。
如下文更详细解释,虚拟存储器接口14提供对存储器12的个别可寻址数据存储位置16到20的随机存取。虚拟存储器接口14经由外部输入/输出(I/O)总线28(其可以是串行或并行总线)与其它装置和组件通信。
图2显示由虚拟存储器接口14实施的方法的实施例。根据此方法,虚拟存储器接口14将平面存储器线性寻址空间中的虚拟地址作为索引应用到物理地址的序列中以识别数据存储位置中的目标数据存储位置(图2,方框29)。虚拟存储器接口14提取缓冲器参考元素列表(图2,方框30)。缓冲器参考元素列表界定已针对特定目的分配的一组相应缓冲器。所述缓冲器参考元素中的每一者包括(i)对应于存储器12中的数据存储位置的物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。虚拟存储器接口14根据缓冲器参考元素列表将所述物理地址中的物理地址排序(即,布置)成序列(图2,方框31)。虚拟存储器接口14相对于目标数据存储位置执行数据传送操作(图2,方框32)。虚拟存储器接口14可能执行的数据传送操作的类型为读取操作、写入操作和拷贝操作。
图3显示分别指定分散在存储器12中的缓冲器22到26的位置(参见图1)的缓冲器参考元素36、38、40列表34的实施例。缓冲器参考元素36到40中的每一者包括(i)指向缓冲器22、24、26中的相应缓冲器的相应缓冲器指针42、44、46和(ii)相应缓冲器大小。共同地,每一元素56到40的缓冲器指针和缓冲器大小指定存储器12中的相应缓冲器22到26的位置。缓冲器指针42到46中的每一者通常对应于存储器12中的相应缓冲器22到26的开始物理地址。缓冲器参考元素列表34可存储于存储器12中或存储于另一数据存储结构中。在一些实施例中,缓冲器参考元素列表34在内部通过DMA描述符(或数据对象)48来参考,所述DMA描述符(或数据对象)48包括指向缓冲器参考元素列表34的列表指针49。DMA描述符48还可包括与存储于缓冲器22到26中的数据相关的额外数据。如下文更详细解释,缓冲器参考元素列表34通常是基于已针对特定目的(例如,用以接收例如数据包的特定数据项或用以保存指定量的存储器以用于进行随机存取读取、写入或读取和写入两者)分配的一组缓冲器而构造。缓冲器参考元素列表34可在将数据写入到已分配用以接收所述数据的一组缓冲器之后而建立或其可在响应于将数据写入到存储器12的请求进行数据写入(还称为“数据填充”)之前建立。
如图4中所示,虚拟存储器接口14通过将平面存储器线性寻址空间50中的虚拟地址映射到存储器12的物理地址空间52中的物理地址来存取存储器12的个别数据存储位置。此过程由标有“VMI映射”的箭头以图解方式表示于图4中,其中VMI代表虚拟存储器接口。平面存储器线性寻址空间50中的虚拟地址按从基本虚拟地址到最终虚拟地址的相连、线性、顺序次序而布置,其中虚拟地址的范围横跨存储器12中的已针对特定目的(例如,用以接收特定数据项或用以保存指定量的存储器以用于随机存取)分配且包括于所述组缓冲器中的所有数据存储位置。在所图解说明的实施例中,所述基本虚拟地址为地址0且所述最终虚拟地址为MaxBytes-1,其中MaxBytes为可用于(或分配给)虚拟存储器接口14的字节的最大数目。如上文所解释,缓冲器22到26可分散于存储器12中。缓冲器22到26中的每一者含有存储器12的一个或一个以上个别可寻址数据存储位置16、18、20。这些数据存储位置16到20中的每一者可通过物理地址空间50中的相应物理地址来存取。在所图解说明的实施例中,所述物理地址中的每一者由相应字节地址构成。
参考图5,由虚拟存储器接口14执行的映射使得装置或处理器能够在不必执行任何存储器分段或分页过程的情况下直接并按顺序地存取存储于缓冲器22到26中的数据项片段(例如,包)的所有分散的物理存储器位置。明确地说,虚拟存储器接口14允许此装置或处理器使用输入虚拟地址来指定存储器12中的与特定存储器分配(例如,分配给例如数据包的特定数据项的存储器)相关联的任何数据存储位置。作为响应,虚拟存储器接口14将输入虚拟地址作为索引应用到存储器12中的对应于含有所述数据项的段的缓冲器的物理地址中。在此过程中,虚拟存储器接口14根据与所述数据项相关联的缓冲器参考项列表将这些物理地址排序成序列且以平面存储器线性寻址空间中的所述虚拟地址中的连续虚拟地址来索引经排序物理地址序列。
在一些实施例中,虚拟存储器接口14将第一虚拟地址映射到通过第一缓冲器参考元素的缓冲器指针参考的物理地址。虚拟存储器接口14接着将连续虚拟地址映射到第一缓冲器中的连续物理地址。在第一缓冲器中的所有物理地址已映射到相应虚拟地址之后,虚拟存储器接口14将下一连续虚拟地址映射到通过列表34中的下一缓冲器参考元素的缓冲器指针参考的物理地址。虚拟存储器接口14重复所述过程直到已将输入虚拟地址映射到所述物理地址中的对应于存储器12中的目标数据存储位置的相应物理地址为止。在图5中所图解说明的实施例中,举例来说,虚拟存储器接口14最初将虚拟地址0映射到第一缓冲器24的开始物理地址。虚拟存储器接口14接着将每一连续虚拟地址(即,虚拟地址1、虚拟地址2等等)映射到第一缓冲器24中的连续物理地址(如由虚线54以图解方式所指示)。虚拟存储器接口14接着针对缓冲器链中由缓冲器参考列表34指定的连续缓冲器中的每一者重复所述过程直到已将输入虚拟地址映射到存储器中的目标数据存储位置的物理地址为止。
Ⅳ.虚拟存储器接口的示范性实施例
虚拟存储器接口14通常实施于硬件电路中。然而,在一些实施例中,虚拟存储器接口14的一种或一种以上方法实施于固件、装置驱动器或软件中。在这些实施例中,用于实施这些方法的过程指令(例如,机器可读代码,例如计算机软件)以及所述方法所产生的数据存储于一个或一个以上机器可读媒体中。适合于有形地体现这些指令和数据的存储装置包括所有形式的非易失性计算机可读存储器,举例来说,包括半导体存储器装置(例如,EPROM、EEPROM和快闪存储器装置)、磁盘(例如,内部硬磁盘和可装卸硬磁盘)、磁光盘、DVD-ROM/RAM和CD-ROM/RAM。
图6显示虚拟存储器接口14的实施例59,其包括提供到存储器l2的虚拟存储器接口的直接存储器存取(DMA)控制器60。在此过程中,DMA控制器60将平面存储器线性寻址空间中的输入虚拟地址作为索引应用到所述物理地址的根据所述组缓冲器排序的序列中。如上文所解释,所述组缓冲器是通过缓冲器参考元素列表参考的,所述缓冲器参考元素中的每一者包含(i)对应于所述物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。
DMA控制器60包括DMA接口62、状态和控制寄存器64、索引寄存器66、窗口寄存器67、一个或一个以上计数器68、DMA读取/写入寄存器70、DMA描述符寄存器72和状态机74。
DMA接口62经由外部I/O总线28(参见图1)将DMA控制器60介接到控制装置,例如总线主装置或微控制器,且经由存储器总线63(参见图1)将DMA控制器60介接到存储器12。DMA接口62的连接到外部I/O总线28的部分以I/O总线时钟频率操作。在一些实施例中,总线主装置在已将数据写入到DMA控制器60的寄存器之后根据命令而使用DMA接口62的此部分来配置DMA控制器60。DMA接口62的连接到存储器总线63的部分以存储器时钟频率操作。DMA控制器60使用DMA接口62的此部分来存取数据缓冲器和存储于存储器中的缓冲器参考元素列表。
在一些实施例中,DMA接口62还将DMA控制器60介接到设备10的内部组件。举例来说,在一些实施例中,设备10包括物理层(PHY)电路或媒体接入控制(MAC)逻辑,其经由请求和确认总线(未显示)与DMA控制器60介接。来自此总线的信号用于通知DMA控制器60:PHY电路或MAC逻辑具有可用于传送的接收(Rx)数据或者PHY电路或MAC逻辑准备好在其内部缓冲器中接收发射数据以供传输。
状态寄存器存储状态信息,所述状态信息由控制装置(例如,总线主装置)读取以确定DMA控制器60的当前状态。在一些实施例中,举例来说,状态寄存器存储指示DMA读取/写入寄存器70的状态的信息。控制寄存器存储控制DMA控制器60的操作的命令串。
索引寄存器66存储输入虚拟地址,所述输入虚拟地址是结合存取存储器12中的数据存储位置的请求接收的。窗口寄存器67提供对由索引寄存器66索引的虚拟存储器位置的读取/写入存取。计数器68在将输入虚拟地址映射到存储器12中的数据存储位置的物理地址中的相应物理地址的过程中使用。
DMA读取/写入寄存器70存储待传送到存储器12或从存储器12传送的数据。在不应用新索引的情况下对读取/写入寄存器70的连续读取操作通常将使得读取/写入区70看起来仿佛其正存取FIFO存储器。
DMA描述符寄存器72存储与当前数据存取请求相关联的DMA描述符48。每一DMA描述符48(参见图3)包括指向相应缓冲器参考元素列表34的相应列表指针49(参见图3)以及与存储于通过DMA描述符48参考的所述组缓冲器22到26中的数据相关的额外数据。DMA控制器60使用列表指针49来检索相应缓冲器参考元素34中的所述元素中的一者或一者以上。DMA控制器60通过基于所检索的缓冲器参考元素将与存储器存取请求相关联地接收的输入虚拟地址映射到存储有所述缓冲器中的对应缓冲器的存储器中的物理地址而确定对应于所述输入虚拟地址的数据存储位置。
状态机74是用于DMA控制器60的基于无处理器的控制逻辑块。状态机74根据存储于控制寄存器中的命令来控制或协调DMA控制器60的操作。明确地说,状态机74通常包括通过门控逻辑块互连的存储器和寄存器,所述门控逻辑块响应于存储于控制寄存器中的命令而产生门控信号。
每一存取请求与对特定DMA描述符48的参考相关联,所述特定DMA描述符48包括指向相应缓冲器参考元素列表34的第一指针49(参见图3)。缓冲器参考元素列表34参考存储与所述存取请求相关联的数据的一组相应缓冲器。所述经链接的缓冲器链通常由设备10的组件来分配且存储于存储器12中。DMA描述符48通常也存储于存储器12中。
DMA控制器60使得总线主装置能够通过将平面存储器线性寻址空间50中的虚拟地址映射到存储器12的物理地址空间52中的物理地址而使用所述虚拟地址来指定存储器12的个别目标数据存储位置。总线主装置可基于此虚拟地址配置DMA控制器60以启用数据传送操作,例如,从目标数据存储位置读取数据或将数据写入到目标数据存储位置。
图7是响应于来自主总线装置的读取或写入请求而安装对象及其描述符的方法的实施例的流程图,所述主总线装置在设备10的外部且与总线28介接(参见图1)。
总线主装置通过向DMA控制器60发射读取或写入请求而配置DMA控制器60(图7,方框80)。所述读取或写入请求通常包括读取或写入命令、DMA描述符和目的地地址。在图7的方法的第一反复期间,假定初始源虚拟地址对应于基本虚拟地址(例如,地址0),除非读取请求中另有指定。在一些情况下,所述目的地地址对应于窗口寄存器67的物理地址(参见图6)。
响应于接收到读取或写入请求(图7,方框80),DMA控制器60将读取命令加载到控制寄存器中、将DMA描述符加载到DMA描述符寄存器中且将索引寄存器中的源虚拟地址设定到基本虚拟地址(图7,方框82)。DMA控制器60检索通过DMA描述符参考的缓冲器参考元素列表34(图7,方框84)。
图8A显示在结合图7描述的已安装对象及其描述符之后DMA控制器60通过其处置来自总线主装置的读取请求的方法的实施例。
在指定了源虚拟地址(图8A,方框86)时,DMA控制器60将当前源物理地址设定到对应于所指定源虚拟地址的物理存储器地址(图8A,方框88)。在此过程中,DMA控制器60使用虚拟地址来识别所述物理地址中的在所述缓冲器中的目标缓冲器中的目标物理地址且相对于经识别物理地址处的目标存储位置执行数据传送操作。在一些实施例中,DMA控制器60通过递增缓冲器地址列表索引且递增缓冲器偏移而将虚拟地址映射到所述物理地址中的目标物理地址。在此过程中,将缓冲器地址列表索引递增到缓冲器参考元素列表中的包括指向所述缓冲器中的涵盖目标物理地址的目标缓冲器的缓冲器指针的元素的索引值。接着将所述缓冲器偏移递增对应于目标缓冲器的开始物理地址与目标物理地址之间的偏移的量。在其中虚拟地址对应于第一缓冲器中的物理地址的情况下,DMA控制器60将虚拟地址映射到所述物理地址中的具有与所述序列中的参考位置偏移一量的序列位置的目标物理地址,所述量对应于虚拟地址与平面存储器线性寻址空间中的参考位置(例如,基本虚拟地址)所偏移的量。
在将输入虚拟地址映射到目标源物理地址之后,DMA控制器60将数据从目标源物理地址移动到读取请求中指定的目的地地址(图8A,方框90)。在一些实施例中,此过程可涉及将目标数据从目标源物理地址传送到读取/写入寄存器70且接着将目标数据从读取/写入寄存器70传送到所指定目的地地址。
在将输入虚拟地址映射到目标物理地址之后,DMA控制器60如所配置可自动地递增当前源物理地址(图8A,方框92)。在一些实施例中,DMA控制器60将缓冲器偏移递增到对应于目标物理地址之后的下一物理地址的下一偏移位置。如果缓冲器偏移的当前计数超出当前目标缓冲器的大小(即,下一物理地址跨越了当前目标缓冲器的边界),那么DMA控制器60将缓冲器地址列表索引递增到缓冲器参考元素列表34中的下一元素的索引值且将缓冲器偏移复位到零,其对应于经链接的缓冲器链中的下一缓冲器的开始物理地址。
如果读取请求中未指定源虚拟地址(图7,方框86),那么DMA控制器60将数据从当前源物理地址移动到目的地地址(图7,方框90)。假定初始源虚拟地址对应于基本虚拟地址(例如,地址0)。
图8A显示在如上文结合图7描述已安装对象及其描述符之后DMA控制器60用以处置来自总线主装置的写入请求的方法的实施例。
在指定了目的地虚拟地址(图8B,方框106)时,DMA控制器60将当前目的地物理地址设定成对应于所指定目的地虚拟地址的物理存储器地址(图8B,方框108)。在此过程中,DMA控制器60使用虚拟地址来识别所述物理地址中的在所述缓冲器中的目标缓冲器中的目标物理地址,且相对于经识别物理地址处的目标存储位置执行数据传送操作。在一些实施例中,DMA控制器60通过递增缓冲器地址列表索引且递增缓冲器偏移而将虚拟地址映射到所述物理地址中的目标物理地址。在此过程中,将缓冲器地址列表索引递增到所述缓冲器参考元素列表中的包括指向所述缓冲器中的涵盖目标物理地址的目标缓冲器的缓冲器指针的元素的索引值。接着将缓冲器偏移递增对应于目标缓冲器的开始物理地址与目标物理地址之间的偏移的量。在虚拟地址对应于第一缓冲器中的物理地址的情况下,DMA控制器60将虚拟地址映射到所述物理地址中的具有相对于所述序列中的参考位置偏移一量的序列位置的目标物理地址,所述量对应于所述虚拟地址相对于平面存储器线性寻址空间中的参考位置(例如,基本虚拟地址)所偏移的量。
在将输入虚拟地址映射到目标目的地物理地址之后,DMA控制器60将数据从写入请求中指定的源地址移动到目标目的地物理地址(图8B,方框110)。在一些实施例中,此过程可涉及将目标数据从所指定源物理地址传送到读取/写入寄存器70且接着将目标数据从读取/写入寄存器70传送到目标目的地物理地址。
在将输入虚拟地址映射到目标目的地物理地址之后,DMA控制器60如所配置可自动地递增由窗口寄存器指向的当前目的地物理地址(图8B,方框112)。在一些实施例中,DMA控制器60将缓冲器偏移递增到对应于目标目的地物理地址之后的下一物理地址的下一偏移位置。如果缓冲器偏移的当前计数超出当前目标缓冲器的大小(即,跨越当前目标缓冲器的边界的下一物理地址),那么DMA控制器60将缓冲器地址列表索引递增到缓冲器参考元素列表34中的下一元素的索引值且将缓冲器偏移复位到零,其对应于经链接缓冲器链中的下一缓冲器的开始物理地址。
如果写入请求中未指定目的地虚拟地址(图8B,方框106),那么DMA控制器60将数据从源地址移动到当前目的地物理地址(图8B,方框110)。假定初始目的地虚拟地址对应于基本虚拟地址(例如,地址0)。
图8A和图8B的读取和写入方法假设已针对读取/写入请求分配了一组缓冲器且已形成指向所述缓冲器的缓冲器参考元素列表。所述缓冲器通常是在存储器12中由设备10中的处理器或专用存储器管理器组件分配的,且所述缓冲器通常是通过参考元素列表形成链,所述参考元素列表通常是通过以分散集中模式操作的处理器或单独DMA引擎形成的。
图9显示形成使得虚拟存储器接口14能够提供对存储于存储器中的接收(Rx)数据的读取存取的缓冲器参考元素列表的方法的实施例。在一些实施例中,此方法由设备10的实施方案来执行,所述实施方案包括将Rx数据存储于存储器12中以供由远程处理器存取的接收器电路。在操作中,接收器电路通过以下操作对接收到Rx数据做出响应:形成具有已在存储器12中分配的Rx数据缓冲器的Rx对象(图9,方框120)且将Rx数据写入到Rx数据缓冲器(图9,方框122)。具有通过正由收发器模块使用的特定格式或协议确定的大小的缓冲器通常分散在存储器12中。接收器电路通常包括RxDMA控制器,其处置Rx数据到可用缓冲器的写入。Rx DMA控制器通常在经链接缓冲器描述符列表上操作,所述经链接缓冲器描述符中的每一者通常包括描述符状态(例如,可用或不可用)、含有经分配缓冲器的实际长度的字以及指向存储器12中的数据缓冲器的开始的指针。缓冲器描述符列表通常存储于描述符队列(例如,圆形或FIFO队列)中。在Rx DMA控制器用Rx数据填充缓冲器之后,建立缓冲器参考元素列表(图9,方框124)。缓冲器参考元素列表通常由设备10中的本地处理器建立。本地处理器执行软件指令以建立缓冲器参考元素列表,其中所述缓冲器参考元素中的每一者包括(i)对应于存储器12中的数据存储位置的物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。本地处理器还形成链接到缓冲器参考元素列表的Rx DMA描述符(图9,方框126)。所述处理器通常将缓冲器参考元素列表和Rx DMA描述符存储于存储器12中。
图10是形成使得虚拟存储器接口14能够提供对存储器12的写入存取的缓冲器参考元素列表的方法的实施例的流程图。在操作中,虚拟存储器接口14通过以下操作对接收到写入命令做出响应:形成空Tx对象(图10,方框130)并请求写入请求中所指定量的分配存储器(图10,方框132)。设备10中的本地处理器或单独的专用存储器管理器组件通过分配足以含有存储器请求中所指定存储量的一组缓冲器来对所述请求做出响应。所述缓冲器的大小通常是通过正由虚拟存储器接口14使用的特定格式或协议确定的且通常分散在存储器12中。本地处理器通常建立用于经分配缓冲器的缓冲器参考元素列表(图10,方框134)。本地处理器执行软件指令以建立缓冲器参考元素列表,其中所述缓冲器参考元素中的每一者包括(i)对应于存储器12中的数据存储位置的物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。本地处理器还形成链接到缓冲器参考元素列表的DMA描述符(图10,方框136)。所述处理器通常将缓冲器参考元素列表和DMA描述符存储于存储器12中。如上所述,所得DMA描述符可由虚拟存储器接口14用来服务所接收写入请求。
V.示范性虚拟存储器接口应用环境
图11显示无线收发器芯片140的实施例,其包括存储器12、虚拟存储器接口14、媒体接入控制(MAC)逻辑142和物理层(PHY)电路144。
MAC逻辑142提供远程总线主装置与PHY电路144之间的过程连接。除其它功能外,MAC逻辑142还将从总线主装置和PHY电路144接收的数据信号分割成帧,且将含有所述帧的输出信号传递到PHY电路144和远程总线主装置。在一些实施例中,MAC逻辑142执行一个或一个以上无线通信协议(例如,IEEE 802.11(WiFi)协议、IEEE802.15.1(蓝牙)协议或IEEE 802.15.4(Zigbee)协议)中指定的MAC层功能中的一些或所有功能。在MAC逻辑142并不执行所有所要MAC层功能的实施例中,运行于总线主装置上的驱动器执行所要MAC协议功能中的剩余功能。
MAC逻辑142通常至少部分地由一个或一个以上离散数据处理组件(或模块)来实施,所述组件或模块不限于任何特定硬件、固件或软件配置。这些数据处理组件可实施于任何计算或数据处理环境中,包括实施于数字电子电路(例如,专用集成电路,例如数字信号处理器(DSP))中或实施于执行编码于固件、装置驱动器或软件中的过程指令的计算机硬件中。在一些实施例中,由MAC逻辑142执行的用于实施MAC协议功能中的一些或所有功能的过程指令(例如,机器可读代码,例如计算机软件)以及其所产生的数据存储于一个或一个以上机器可读媒体中。一般来说,术语“机器可读媒体”指代能够携载可由机器读取的信息的任何媒体。适合于有形地体现这些指令和数据的存储装置包括但不限于所有形式的非易失性计算机可读存储器,举例来说,包括半导体存储器装置(例如,EPROM、EEPROM和快闪存储器装置)、磁盘(例如,内部硬磁盘和可装卸硬磁盘)、磁光盘、DVD-ROM/RAM和CD-ROM/RAM。
PHY电路144通常至少部分地由无线收发器来实施,所述无线收发器通常包括与天线146介接的模拟部分和与媒体接入控制电路142介接的数字部分。所述模拟收发器部分通常执行从MAC逻辑142接收的基带发射(TX)数据信号的增频转换且输出基带接收(RX)数据信号,其为从天线146接收的信号的经降频转换的版本。在一些实施例中,使用超外差技术来执行增频转换功能和降频转换功能。在其它实施例中,使用直接转换技术来执行增频转换功能和降频转换功能。
图12显示由无线收发器芯片140(参见图11)执行的虚拟存储器介接方法的实施例。根据此方法,PHY电路144以无线方式发射和接收数据的包(图12,方框190)。PHY电路144将包数据存储于分散在存储器12中的缓冲器中,所述存储器12包括可通过物理地址寻址的数据存储位置(图12,方框192)。本地处理器使相应缓冲器参考元素列表与所存储包中的每一者相关联,所述相应缓冲器参考元素中的每一者包括(i)指向含有所述包的数据的相应缓冲器的相应缓冲器指针和(ii)相应缓冲器的大小(图12,方框194)。虚拟存储器接口14基于所述物理地址中的物理地址根据所述缓冲器参考元素列表中的相应缓冲器参考元素列表排序成相应序列的相应排序且基于以平面存储器线性寻址空间中的连续虚拟地址对每一所述经排序物理地址序列中的相应索引而提供对数据存储位置中的个别数据存储位置的随机存取(图12,方框196)。
图13显示无线收发器芯片140(参见图11)的实施例150。无线收发器芯片150包括存储器12、虚拟存储器接口14、本地处理器152、存储器管理器154、PHY层组件156、Tx DMA引擎158、Rx DMA引擎160和总线166。在所图解说明的实施例中,存储器12为随机存取存储器(RAM)芯片。本地处理器152通常由标准处理器或微控制器来实施。在一些实施例中,所述本地处理器为可从飞思卡尔半导体公司(FreescaleSemiconductor,inc.)购得的Motorola 68000 16/32-位CISC微处理器。存储器管理器154为基于硬件的存储器管理器,其根据组块存储器分配方案分配RAM 12中的存储量。所述PHY层组件包括以上结合无线收发器芯片140所描述的类型的无线收发器。Tx DMA引擎158和Rx DMA引擎160通常由标准分散集中DMA引擎来实施。
图14显示无线台170的实施例。无线台170包括无线收发器芯片140(参见图11)、主机模块172和电源173。电源173通常为电池组、燃料电池或者可再充电(例如,连接到AC公用电源的AC电源适配器)或以其它方式再调节的其它电力存储件。
在所图解说明的实施例中,主机模块172包括主机处理单元174和无线模块接口(I/F)176。主机处理单元174通常包括一个或一个以上处理器,所述处理器中的每一者可以是呈各种可从市场购得的处理器中的任一处理器的形式。主机处理单元174还可包括只读存储器(ROM)(其存储含有用于主机模块172的启动例程的基本输入/输出系统(BIOS))和随机存取存储器(RAM)。主机处理单元174经由无线模块接口176向无线收发器芯片140发射信号178且从无线收发器芯片140接收信号180。主机处理单元174通常执行控制无线收发器芯片140的操作的各种方面的各种过程。在一些实施例中,主机处理单元174向无线收发器芯片140发射从存储器12读取的请求和将数据写入到存储器的请求。此等请求包括Rx数据读取请求、Tx数据写入请求以及出于其它读取/写入操作的目的而存取存储器12的请求。
无线模块接口176通过总线182电耦合到虚拟存储器接口14。一般来说,总线182可根据任何类型的数据链接协议来实施,所述数据链接协议包括但不限于串行外围接口(SPI)总线协议、排队串行外围接口(QSPI)总线协议、I2C串行计算机总线协议和SDIO总线协议。在一些示范性实施方案中,所述总线为SPI总线,其提供主机模块与无线收发器芯片140之间的同步串行数据链接。
在无线台170中,虚拟存储器接口14可由主机处理单元174用来在存储器12中存储实现无线连接性所需的各种数据,包括TCP协议控制块数据、MAC数据和驱动器数据。另外,在一些实施例中,主机处理单元174可经由发送到虚拟存储器接口14的命令而在存储器中构造发射(Tx)数据包。以此方式,虚拟存储器接口14使得主机处理单元174能够使用没有充足资源来实施此功能性的资源高度受限的总线主装置和微控制器。因此,虚拟存储器接口14使得使用此类资源受限总线主装置和微控制器的低成本和遗留电子装置能够在不需要显著设计修改的情况下容易地配备无线连接性。
Ⅵ.总结
本文中所描述的实施例提供虚拟存储器接口,所述虚拟存储器接口将平面存储器线性寻址空间中的虚拟地址作为索引应用到根据一组缓冲器排序成序列的物理存储器地址。以此方式,这些实施例使得装置(例如,处理器)能够在不必执行任何存储器分段和分页过程的情况下直接并按顺序地存取经分片数据项(例如,包)的所有分散的物理存储器位置在一些实施例中,这些存取包括对所述分散的数据存储位置的读取存取和写入存取两者。

Claims (20)

1.一种提供存取缓冲器的个别存储位置的设备,其包含:
存储器,其包含可通过物理地址寻址的数据存储位置;以及
虚拟存储器接口,所述虚拟存储器接口包含直接存储器存取控制器,所述直接存储器存取控制器可操作以连接至所述存储器,且可操作以接收来自总线的虚拟地址,且可操作以在内部将所述虚拟地址翻译为物理地址,其中所述虚拟地址为在平面存储器线性寻址空间中的地址,且所述虚拟地址作为索引应用到所述物理地址的根据一组缓冲器排序的序列中,其中每一缓冲器由指向物理参考地址的地址指针和缓冲器长度界定,其中所述直接存储器存取控制器包括:
索引寄存器,其经配置以存储所述虚拟地址;
描述符寄存器,其经配置以存储指向和所述虚拟地址相关联的缓冲器列表的列表指针;
状态机,其用于控制所述直接存储器存取控制器的操作且经配置以直接确定所述物理地址;
其中在所述状态机的控制下,一旦接收到数据传送请求,所述状态机在所述索引寄存器中存储相关联的虚拟地址,且在所述描述符寄存器中存储相关联的列表指针,且使用所述列表指针根据所述数据传送请求的所述虚拟地址来确定来自所述缓冲器列表的多个缓冲器中的一个,其中所述状态机凭借所选择的缓冲器加载物理参考地址和缓冲器长度,通过使用所述索引寄存器在所选择的缓冲器内确定偏移来确定所述物理地址,且使用所述物理地址执行所述数据传送请求。
2.根据权利要求1所述的设备,其中
响应于接收到所述虚拟地址,所述直接存储器存取控制器将所述虚拟地址映射到所述物理地址中的具有相对于所述序列中的所述物理参考地址偏移一量的序列位置的目标物理地址,所述量对应于所述虚拟地址相对于所述平面存储器线性寻址空间中的参考位置所偏移的量。
3.根据权利要求2所述的设备,其中
在将所述虚拟地址映射到相应物理地址时,所述直接存储器存取控制器将缓冲器地址列表索引递增到所述缓冲器中的目标缓冲器的索引值,所述目标缓冲器涵盖所述目标物理地址,且将缓冲器偏移递增对应于所述目标缓冲器的开始物理地址与所述目标物理地址之间的偏移的量。
4.根据权利要求1所述的设备,其中
响应于接收到与数据传送请求相关联的所述虚拟地址,所述直接存储器存取控制器使用所述虚拟地址来识别所述物理地址中的在所述缓冲器中的目标缓冲器中的目标物理地址,且相对于所述经识别物理地址处的目标存储位置执行数据传送操作。
5.根据权利要求1所述的设备,其中所述组缓冲器是通过缓冲器参考元素列表来参考的,所述缓冲器参考元素中的每一者包含(i)对应于所述物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小。
6.根据权利要求5所述的设备,其中所述设备中的本地处理器经操作以在数据写入所述缓冲器后建立缓冲器参考元素列表。
7.根据权利要求5所述的设备,其中
响应于将数据写入到所述存储器的请求,所述直接存储器存取控制器根据分散在所述存储器中的一组缓冲器而建立所述缓冲器参考元素列表。
8.根据权利要求1所述的设备,其进一步包含无线收发器,所述无线收发器可操作以发射和接收数据的包,其中所接收包数据存储于分散在所述存储器中的缓冲器中,且所述所接收包中的每一者与相应缓冲器参考元素列表相关联,所述缓冲器参考元素中的每一者包含(i)指向含有所述包的数据的相应缓冲器的相应缓冲器指针和(ii)所述相应缓冲器的大小;
其中对于所述所接收包中的每一者,所述直接存储器存取控制器可操作以将相应平面存储器线性寻址空间中的虚拟地址作为索引应用到所述物理地址的根据所述相应缓冲器参考元素列表排序的序列中。
9.根据权利要求8所述的设备,其中所述存储器、所述直接存储器存取控制器和所述无线收发器实施于单一半导体芯片上。
10.一种提供存取缓冲器的个别存储位置的设备,其包含:
存储器,其包含可通过物理地址寻址的数据存储位置;
无线收发器,其可操作以发射和接收数据的包;
逻辑,其可操作以将包数据存储于分散在所述存储器中的缓冲器中,且使相应缓冲器参考元素列表与所述所存储包中的每一者相关联,所述缓冲器参考元素中的每一者包含(i)指向含有所述包的数据的相应缓冲器的相应缓冲器指针和(ii)所述相应缓冲器的大小;以及
虚拟存储器接口,所述虚拟存储器接口包含直接存储器存取控制器,所述直接存储器存取控制器可操作以连接至所述存储器,且可操作以接收来自总线的虚拟地址,且可操作以在内部将所述虚拟地址翻译为物理地址,其中所述虚拟地址为在平面存储器线性寻址空间中的地址,且所述虚拟地址作为索引应用到所述物理地址的根据一组缓冲器排序的序列中,其中所述直接存储器存取控制器包括:
索引寄存器,其经配置以存储所述虚拟地址;
描述符寄存器,其经配置以存储指向和所述虚拟地址相关联的缓冲器列表的列表指针;
状态机,其用于控制所述直接存储器存取控制器的操作且经配置以直接确定所述物理地址;
其中在所述状态机的控制下,一旦接收到数据传送请求,所述状态机在所述索引寄存器中存储相关联的虚拟地址,且在所述描述符寄存器中存储相关联的列表指针,且使用所述列表指针根据所述数据传送请求的所述虚拟地址来选择来自所述缓冲器列表的多个缓冲器中的一个,其中所述状态机凭借所选择的缓冲器加载物理参考地址和缓冲器长度,通过使用所述索引寄存器在所选择的缓冲器内确定偏移来确定所述物理地址,且使用所述物理地址执行所述数据传送请求。
11.根据权利要求10所述的设备,其中
响应于接收到所述虚拟地址中的与关于特定包的数据传送请求相关联的相应虚拟地址,所述虚拟存储器接口可操作以基于相应索引而将所述所接收虚拟地址解析成所述物理地址中的目标物理地址,且相对于所述目标物理地址处的所述数据存储位置执行数据传送操作。
12.根据权利要求10所述的设备,其中所述虚拟存储器接口可操作以向总线主装置提供对所述数据存储位置中的个别数据存储位置的随机存取。
13.根据权利要求10所述的设备,其中所述存储器、所述无线收发器、所述逻辑和所述虚拟存储器接口实施于单一半导体芯片上。
14.一种提供存取缓冲器的个别存储位置的方法,其包含:
提取缓冲器参考元素列表,所述缓冲器参考元素中的每一者包含(i)对应于存储器中的数据存储位置的物理地址中的相应物理地址的相应缓冲器指针和(ii)相应缓冲器大小;
根据所述缓冲器参考元素列表将所述物理地址中的物理地址排序成虚拟地址的连续序列;
由直接存储器存取控制器接收虚拟地址,且根据所排序的物理地址在所述直接存储器存取控制器内确定相关联的物理地址,其中在所述直接存储器存取控制器内的状态机的控制下,所述虚拟地址被存储于索引寄存器,相关联的列表指针被存储于描述符寄存器,其中所述状态机凭借所述列表指针加载物理参考地址和缓冲器长度,且使用所述索引寄存器确定物理地址,以及
使用所述物理地址借助所述直接存储器存取控制器相对于目标数据存储位置执行来自或去往所述存储器的数据传送操作。
15.根据权利要求14所述的方法,其进一步包含
响应于接收到所述虚拟地址,选择具有相对于所述序列中的参考位置偏移一量的序列位置的物理地址作为目标物理地址,所述量对应于所述虚拟地址相对于平面存储器线性寻址空间中的参考位置所偏移的量。
16.根据权利要求15所述的方法,其中所述选择包含
将缓冲器地址列表索引递增到包含指向涵盖所述目标物理地址的目标缓冲器的缓冲器指针的所述缓冲器参考元素的索引值;以及
将缓冲器偏移递增对应于所述目标缓冲器的所述物理地址与所述目标物理地址之间的偏移的量。
17.根据权利要求14所述的方法,其中存取包含
响应于接收到与数据传送请求相关联的所述虚拟地址,使用所述虚拟地址来识别所述物理地址中的在分散在所述存储器中的目标缓冲器中的目标物理地址,且相对于所述目标物理地址处的所述数据存储位置执行数据传送操作。
18.根据权利要求14所述的方法,其进一步包含根据分散在所述存储器中的一组缓冲器而建立所述缓冲器参考元素列表。
19.一种提供存取缓冲器的个别存储位置的方法,其包括:
以无线方式发射和接收数据的包;
将包数据存储于分散在存储器中的缓冲器中,所述存储器包含可通过物理地址寻址的数据存储位置;
使相应缓冲器参考元素列表与所述所存储包中的每一者相关联,所述缓冲器参考元素中的每一者包含(i)指向含有所述包的数据的相应缓冲器的相应缓冲器指针和(ii)所述相应缓冲器的大小;以及
借助直接存储器存取控制器以基于所述物理地址中的物理地址根据所述缓冲器参考元素列表中的相应缓冲器参考元素列表排序成相应序列的相应排序且基于以平面存储器线性寻址空间中的连续虚拟地址对每一所述经排序物理地址序列的相应索引而提供对所述数据存储位置中的个别数据存储位置的随机存取,其中使用虚拟地址以执行存取所述数据存储位置,在所述直接存储器存取控制器内部的状态机的控制下的所述直接存储器存取控制器通过将所述虚拟地址存储于索引寄存器,以及将相关联的列表指针存储于描述符寄存器,在所述直接存储器存取控制器内部确定所述虚拟地址的物理地址,其中所述状态机凭借所选择的缓冲器参考元素加载物理参考地址和缓冲器长度,通过使用所述索引寄存器在所选择的缓冲器内确定偏移来确定物理地址,且使用所述物理地址执行所述存取。
20.根据权利要求19所述的方法,其中响应于接收到所述虚拟地址中的与关于特定包的数据传送请求相关联的相应虚拟地址,
基于所述相应索引而将所述所接收虚拟地址解析成所述物理地址中的目标物理地址;以及
相对于所述目标物理地址处的所述数据存储位置执行数据传送操作。
CN200980106735.XA 2008-02-27 2009-02-23 虚拟存储器接口 Active CN102124525B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/037,940 2008-02-27
US12/037,940 US8219778B2 (en) 2008-02-27 2008-02-27 Virtual memory interface
PCT/US2009/034820 WO2009108590A1 (en) 2008-02-27 2009-02-23 Virtual memory interface

Publications (2)

Publication Number Publication Date
CN102124525A CN102124525A (zh) 2011-07-13
CN102124525B true CN102124525B (zh) 2015-02-04

Family

ID=40999451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980106735.XA Active CN102124525B (zh) 2008-02-27 2009-02-23 虚拟存储器接口

Country Status (6)

Country Link
US (1) US8219778B2 (zh)
EP (1) EP2250648B1 (zh)
KR (1) KR101535626B1 (zh)
CN (1) CN102124525B (zh)
TW (1) TWI420532B (zh)
WO (1) WO2009108590A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8701120B2 (en) 2009-02-27 2014-04-15 International Business Machines Corporation Virtualization of storage buffers used by asynchronous processes
US8446944B1 (en) * 2009-04-30 2013-05-21 Verint Video Solutions Inc. Data processing system and method
GB2483081A (en) * 2010-08-25 2012-02-29 Sony Corp America Tamper resistance in media processing using an obfuscated buffer handle
KR20120055779A (ko) * 2010-11-23 2012-06-01 한국전자통신연구원 지그비 기반의 음성 데이터 송수신 시스템 및 그의 음성 데이터 송수신 방법
KR101790401B1 (ko) 2011-08-25 2017-10-25 선 페이턴트 트러스트 주기적인 버퍼 기재를 사용하여 비디오를 부호화 및 복호하는 방법 및 장치
BR112013020486B1 (pt) 2011-09-07 2022-07-19 Sun Patent Trust Método de codificação de imagem, método de decodificação de imagem, aparelho de codificação de imagem, aparelho de decodificação de imagem e aparelho de codificação e de decodificação de imagem
ES2844148T3 (es) 2011-09-19 2021-07-21 Sun Patent Trust Procedimiento de descodificación de imágenes, dispositivo de descodificación de imágenes
IN2014CN02604A (zh) * 2011-10-19 2015-08-07 Panasonic Corp
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9720858B2 (en) 2012-12-19 2017-08-01 Nvidia Corporation Technique for performing memory access operations via texture hardware
CN104516822B (zh) * 2013-09-29 2018-01-23 华为技术有限公司 一种内存访问方法和设备
US10261814B2 (en) * 2014-06-23 2019-04-16 Intel Corporation Local service chaining with virtual machines and virtualized containers in software defined networking
US10162558B2 (en) 2015-10-30 2018-12-25 Micron Technology, Inc. Data transfer techniques for multiple devices on a shared bus
US9977745B2 (en) * 2016-01-05 2018-05-22 Knuedge, Inc. Flow control through packet router
KR20180009217A (ko) * 2016-07-18 2018-01-26 삼성전자주식회사 데이터 저장 장치의 작동 방법과 이를 포함하는 데이터 처리 시스템의 작동 방법
KR101873878B1 (ko) * 2016-11-09 2018-07-03 조선대학교산학협력단 상대 차집합에 기초하여 메시지의 최적 분산 저장이 가능한 데이터 저장 장치 및 방법
CN109923528B (zh) * 2017-09-25 2021-04-09 华为技术有限公司 一种数据访问的方法和装置
KR102331926B1 (ko) * 2017-11-17 2021-11-29 삼성전자주식회사 저장 장치를 포함하는 호스트 시스템의 동작 방법 및 저장 장치 제어기의 동작 방법
KR101977119B1 (ko) * 2018-01-10 2019-05-10 전남대학교산학협력단 차 커버링 배열을 이용한 데이터 분산 저장 장치 및 방법
DE112020002497T5 (de) * 2019-05-23 2022-04-28 Hewlett Packard Enterprise Development Lp System und verfahren zur dynamischen zuweisung von reduktionsmotoren
CN110347614B (zh) * 2019-07-08 2022-08-12 镕铭微电子(济南)有限公司 存储空间映射算法、缓存状态机、存储装置、存储介质
US10642766B1 (en) * 2019-07-15 2020-05-05 Daniel Kilsdonk Facilitating sequential data transformations via direct memory access
CN112783805B (zh) * 2019-11-05 2023-11-21 晶豪科技股份有限公司 内存芯片,内存模块以及用来假性存取其记忆库的方法
US11243801B2 (en) * 2020-03-26 2022-02-08 Red Hat, Inc. Transparent huge pages support for encrypted virtual machines
WO2022055479A1 (en) * 2020-09-08 2022-03-17 Zeku Inc. Microcontroller chips employing mapped register files, and methods and wireless communication devices using the same
CN112817534B (zh) * 2021-02-02 2023-07-04 深圳忆联信息系统有限公司 提高ssd读写性能的方法、装置、计算机设备及存储介质
CN114879584B (zh) * 2022-07-05 2022-10-28 成都智明达电子股份有限公司 一种基于fpga的dma控制器边界对齐方法及其电路

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6336180B1 (en) * 1997-04-30 2002-01-01 Canon Kabushiki Kaisha Method, apparatus and system for managing virtual memory with virtual-physical mapping
JP3369580B2 (ja) * 1990-03-12 2003-01-20 ヒューレット・パッカード・カンパニー 直接メモリアクセスを行うためのインターフェース装置及び方法
KR0181471B1 (ko) * 1990-07-27 1999-05-15 윌리암 피.브레이든 컴퓨터 데이타 경로배정 시스템
GB2270780A (en) * 1992-09-21 1994-03-23 Ibm Scatter-gather in data processing systems.
US5732041A (en) * 1993-08-19 1998-03-24 Mmc Networks, Inc. Memory interface unit, shared memory switch system and associated method
US5758182A (en) * 1995-05-15 1998-05-26 Nvidia Corporation DMA controller translates virtual I/O device address received directly from application program command to physical i/o device address of I/O device on device bus
JPH0991197A (ja) * 1995-09-22 1997-04-04 Sharp Corp データ転送制御装置
JPH09231130A (ja) * 1996-02-26 1997-09-05 Mitsubishi Electric Corp マイクロコンピュータ
US6088740A (en) * 1997-08-05 2000-07-11 Adaptec, Inc. Command queuing system for a hardware accelerated command interpreter engine
US6434592B1 (en) * 1998-01-05 2002-08-13 Intel Corporation Method for accessing a network using programmed I/O in a paged, multi-tasking computer
US6092124A (en) * 1998-04-17 2000-07-18 Nvidia Corporation Method and apparatus for accelerating the rendering of images
US6418518B1 (en) * 1998-09-18 2002-07-09 National Semiconductor Corporation Decoupled address and data access to an SDRAM
US6681346B2 (en) * 2000-05-11 2004-01-20 Goodrich Corporation Digital processing system including a DMA controller operating in the virtual address domain and a method for operating the same
US6728722B1 (en) * 2000-08-28 2004-04-27 Sun Microsystems, Inc. General data structure for describing logical data spaces
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6928516B2 (en) * 2000-12-22 2005-08-09 Texas Instruments Incorporated Image data processing system and method with image data organization into tile cache memory
US20020144027A1 (en) * 2001-03-27 2002-10-03 Schmisseur Mark A. Multi-use data access descriptor
US20050060441A1 (en) * 2001-03-27 2005-03-17 Schmisseur Mark A. Multi-use data access descriptor
JP2003007065A (ja) * 2001-06-21 2003-01-10 Nec Microsystems Ltd データ記憶回路、データ処理装置
JP2003208399A (ja) * 2002-01-15 2003-07-25 Hitachi Ltd データ処理装置
US7003702B2 (en) * 2002-03-18 2006-02-21 Emc Corporation End-to-end checksumming for read operations
US7069413B1 (en) * 2003-01-29 2006-06-27 Vmware, Inc. Method and system for performing virtual to physical address translations in a virtual machine monitor
EP1611511A1 (en) * 2003-03-25 2006-01-04 Koninklijke Philips Electronics N.V. Method of addressing data in a shared memory by means of an offset
US7127534B2 (en) * 2003-06-27 2006-10-24 Emulex Design & Manufacturing Corporation Read/write command buffer pool resource management using read-path prediction of future resources
US6906964B2 (en) * 2003-06-27 2005-06-14 Hewlett-Packard Development Company, L.P. Multiple buffer memory interface
US7287101B2 (en) * 2003-08-05 2007-10-23 Intel Corporation Direct memory access using memory descriptor list
US7065630B1 (en) * 2003-08-27 2006-06-20 Nvidia Corporation Dynamically creating or removing a physical-to-virtual address mapping in a memory of a peripheral device
US7142477B1 (en) * 2004-06-18 2006-11-28 Cypress Semiconductor Corp. Memory interface system and method for reducing cycle time of sequential read and write accesses using separate address and data buses
GB2417102B (en) * 2004-07-23 2007-11-28 Hewlett Packard Development Co System and method for managing memory
US7734832B2 (en) * 2004-11-10 2010-06-08 Microsoft Corporation Method and system for structured programmed input/output transactions
US8595313B2 (en) * 2005-11-29 2013-11-26 Netapp. Inc. Systems and method for simple scale-out storage clusters
US8549098B2 (en) * 2006-01-12 2013-10-01 Broadcom Israel Research, Ltd. Method and system for protocol offload and direct I/O with I/O sharing in a virtualized network environment
US20070226795A1 (en) * 2006-02-09 2007-09-27 Texas Instruments Incorporated Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture
US20080028181A1 (en) * 2006-07-31 2008-01-31 Nvidia Corporation Dedicated mechanism for page mapping in a gpu
US7945216B2 (en) * 2006-12-20 2011-05-17 Broadcom Corporation Single chip wireless transceiver operable to perform voice, data and radio frequency (RF) processing
US7877524B1 (en) * 2007-11-23 2011-01-25 Pmc-Sierra Us, Inc. Logical address direct memory access with multiple concurrent physical ports and internal switching
US7743191B1 (en) * 2007-12-20 2010-06-22 Pmc-Sierra, Inc. On-chip shared memory based device architecture
US8019969B2 (en) * 2008-02-14 2011-09-13 International Business Machines Corporation Self prefetching L3/L4 cache mechanism

Also Published As

Publication number Publication date
KR20100138940A (ko) 2010-12-31
WO2009108590A1 (en) 2009-09-03
TW200941496A (en) 2009-10-01
EP2250648B1 (en) 2015-07-08
EP2250648A1 (en) 2010-11-17
US20090216964A1 (en) 2009-08-27
CN102124525A (zh) 2011-07-13
EP2250648A4 (en) 2013-04-24
KR101535626B1 (ko) 2015-07-09
US8219778B2 (en) 2012-07-10
TWI420532B (zh) 2013-12-21

Similar Documents

Publication Publication Date Title
CN102124525B (zh) 虚拟存储器接口
CN102460405B (zh) 用于通过存储器装置来控制主机存储器存取的方法及系统
CN100592273C (zh) 执行dma数据传输的设备和方法
CN101149714B (zh) 用于执行直接存储器存取的方法和系统
US6622193B1 (en) Method and apparatus for synchronizing interrupts in a message passing queue oriented bus system
US7975120B2 (en) Dynamic allocation of message buffers
US9152580B1 (en) Method and apparatus for transferring data between a host and an embedded device
US20020066792A1 (en) Concurrent communication with multiple applications on a smart card
CN107967225B (zh) 数据传输方法、装置、计算机可读存储介质和终端设备
CN101840306B (zh) VxWorks操作系统中实现驱动SATA设备的方法和系统
CN105335309B (zh) 一种数据传输方法及计算机
KR101003102B1 (ko) 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
US10564898B2 (en) System and method for storage device management
US20080022018A1 (en) Card type peripheral apparatus and host apparatus
CN114201268B (zh) 一种数据处理方法、装置、设备及可读存储介质
KR20170013270A (ko) 플래시 메모리 기반 저장 디바이스의 입력/출력 가상화 (iov) 호스트 제어기 (hc) (iov-hc)
EP1625506B1 (en) Usb host controller with memory for transfer descriptors
CN112131019A (zh) 微内核操作系统进程间快速通信方法
CN109857553B (zh) 内存管理方法及装置
CN113986137A (zh) 存储装置和存储系统
CN105453066B (zh) 处理器和存储器控制方法
CN101223511A (zh) 用于非存储映像式设备存储器的直接访问的方法和系统
CN113343735B (zh) 一种读写器的标签处理方法、读写器及存储介质
CN102752223B (zh) 并行系统间数据传输方法及其系统
US7532625B2 (en) Block transfer for WLAN device control

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