CN112328510B - 进阶主机控制器及其控制方法 - Google Patents
进阶主机控制器及其控制方法 Download PDFInfo
- Publication number
- CN112328510B CN112328510B CN202011180639.4A CN202011180639A CN112328510B CN 112328510 B CN112328510 B CN 112328510B CN 202011180639 A CN202011180639 A CN 202011180639A CN 112328510 B CN112328510 B CN 112328510B
- Authority
- CN
- China
- Prior art keywords
- hardware
- prd
- cache module
- hardware region
- controller
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种进阶主机控制器(Advanced Host Controller),包含硬件区域描述表控制器以及硬件区域描述表高速缓存模块。硬件区域描述表高速缓存模块耦接硬件区域描述表控制器。硬件区域描述表高速缓存模块用于存储至少一个硬件区域描述符条目。硬件区域描述表控制器从硬件区域描述表高速缓存模块获取硬件区域描述符条目。硬件区域描述表控制器根据硬件区域描述符条目传输数据。其中,硬件区域描述符条目是至少一个硬件区域描述符条目之一。
Description
技术领域
本申请是关于一种实现控制器的技术,特别是关于一种进阶主机控制器(Advanced Host Controller Interface,AHCI)及其控制方法。
背景技术
一般而言,在串行高级技术附件(Serial Advanced Technology Attachment,SATA)架构下的储存系统进行数据传输时,软件先建置(build)指令(command,包括指令头和指令列表,本发明中指数据传输指令,下同),然后将建置好的指令存入一存储器(Memory),并通知进阶主机控制器对指令进行处理。进阶主机控制器接收到软件的通知后,再在与主机系统连接的储存装置之间(比如,在存储器和硬盘之间)进行数据传输操作。在一实施例中,上述软件是进阶主机控制器(Advanced Host Controller)的驱动程序(driver)。
基本上,进阶主机控制器的数据传输过程可分为发送指令与传送数据两阶段。进阶主机控制器发送指令的过程为:从存储器读取一指令头(Command Header),从中得到指令列表起始地址(Command Table Base Address,CTBA);随后利用这个指令列表起始地址从存储器取得指令列表(Command Table)中的指令帧信息结构(command FrameInformation Structure,command FIS),并发送该指令帧信息结构至储存装置(例如硬盘)。在接下来的传送数据阶段中,当进阶主机控制器接收到储存装置发来的直接存储器访问设定帧信息结构 (Direct Memory Access setup Frame Information Structure,DMAsetup FIS) 后,进阶主机控制器将根据直接存储器访问设定帧信息结构,再次从存储器取得上述指令头以得到指令列表起始地址(CTBA)。随后,进阶主机控制器利用这个指令列表起始地址每次从存储器获取指令列表中的一个硬件区域描述符条目(Physical RegionDescriptor entry,PRD entry),并根据获取到的PRD条目传送数据。以上步骤重复进行,直到将指令列表中的所有PRD条目处理完为止。
由于进阶主机控制器在发送指令与传送数据两阶段都需要通过存储器控制器到存储器读取指令头,而且在传送数据阶段每次只能从存储器读取一个 PRD条目,因而增加了存储器控制器的工作负担。此外,由于每次读取指令头及PRD条目时都是串行进行(serial transmission),且传输过程还会受到存储器存取的延迟影响,所以在存储器延迟较大的情况下,对串行高级技术附件 (SATA)储存系统的性能有明显的影响。特别是当每次读写的数据量较小时,会使储存系统性能降低许多。
发明内容
为了解决上述问题,本发明的实施例提出一种进阶主机控制器(Advanced HostController)。进阶主机控制器包含硬件区域描述表控制器以及硬件区域描述表高速缓存模块。硬件区域描述表高速缓存模块耦接硬件区域描述表控制器。硬件区域描述表高速缓存模块从存储器读取至少一个硬件区域描述符条目,存储所述至少一个硬件区域描述符条目。硬件区域描述表控制器从硬件区域描述表高速缓存模块获取一硬件区域描述符条目。硬件区域描述表控制器根据硬件区域描述符条目传输数据。其中,硬件区域描述符条目是至少一个硬件区域描述符条目之一。
本发明的实施例提出一种控制方法,适用于进阶主机控制器(Advanced HostController)。控制方法包含:硬件区域描述表高速缓存模块从存储器读取至少一个硬件区域描述符条目。所述硬件区域描述表高速缓存模块存储所述至少一个硬件区域描述符条目。从所述硬件区域描述表高速缓存模块获取一硬件区域描述符条目。以及,根据所述硬件区域描述符条目传输数据。其中,所述硬件区域描述符条目是至少一个硬件区域描述符条目之一,其中,所述至少一个硬件区域描述符条目储存于所述硬件区域描述表高速缓存模块中。
综上,本申请的进阶主机控制器,每次从存储器读取至少一个硬件区域描述符条目,减少了读取存储器的次数,从而达到减轻存储器控制器的工作负担、使整体系统更有效率取得数据的效果。
附图说明
图1A~图1B是依照本发明一实施例绘示数据处理装置的方块图。
图2A是依照本发明一实施例绘示的进阶主机控制器与存储器中的指令之间的对应关系的示意图。
图2B是依照本发明一实施例绘示的端口寄存器的结构示意图。
图2C是依照本发明一实施例绘示的指令头的结构示意图。
图3是依照本发明一实施例绘示的进阶主机控制器的方块图。
图4是依照本发明一实施例绘示的指令控制器的方块图。
图5A是依照本发明一实施例绘示的发送指令的流程图。
图5B是依照本发明一实施例绘示的传送数据的流程图。
图6是依照本发明一实施例绘示的指令清单高速缓存结构操作的波形图。
图7是依照本发明一实施例绘示的数据控制器的方块图。
图8是依照本发明一实施例绘示的数据控制器的传输数据的流程图。
图9是依照本发明一实施例绘示的数据控制器操作的波形图。
图10是依照本发明一实施例绘示的硬件区域描述表高速缓存模块的状态机的状态转换图。
具体实施方式
以下说明为完成发明的较佳实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求书。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,是用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件以及/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
于权利要求中使用如“第一”、“第二”、“第三”等词是用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序、先行关系、或者是一个元件先于另一个元件、或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1A~图1B是依照本发明一实施例绘示的数据处理装置的方块图。于图1A中,数据处理装置100包含处理器10、芯片组20、存储器30、硬盘 35、总线60、进阶主机控制器42以及硬盘45。本领域具通常知识者应能理解,数据处理装置100仅为一例,数据处理装置100可包含多个处理器10及多个进阶主机控制器42。
于一实施例中,处理器10可以由集成电路如微控制单元(micro controller)、微处理器(microprocessor)、数字信号处理器(digital signal processor)、专用集成电路(application specific integrated circuit,ASIC)或逻辑电路来实施。
于一实施例中,芯片组20是一组桥接CPU与其他芯片的集成电路芯片。
于一实施例中,存储器30可以由动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)或其他具有可储存数据与程序的硬件来实施。
于此实施例中,芯片组20耦接至总线60、处理器10、存储器30及硬盘 35。进阶主机控制器42亦耦接至总线60及硬盘45。值得注意的是,芯片组 20包含进阶主机控制器22,并控制存储器30、硬盘35、硬盘45以及其他支持SATA架构储存装置之间的数据传输。进阶主机控制器42可以包含在可与多个支持SATA架构储存装置耦接的控制芯片里(例如硬盘外接盒的控制芯片)。至于总线60,可以是外部连结标准(Peripheral Component Interconnect,PCI)总线、PCI-x总线、PCIE(PCI Express)总线等之类的总线,并与PCI、PCI- x、PCIE、SATA、mSATA、m.2、以及其他可支持储存装置的接口耦接,以进行与储存装置之间的数据传输操作。
于另一实施例中,如图1B所示,数据处理装置150中包含处理器10、存储器30、硬盘35、进阶主机控制器22以及总线60。
于此实施例中,进阶主机控制器22耦接至总线60及硬盘35,处理器10 耦接至总线60及存储器30。
下述实施例可以应用于数据处理装置100、150或其他类似的数据处理装置中。
如前所述,在串行高级技术附件架构下的储存系统进行数据传输时,软件先建置(build)指令(包括指令头、指令列表),然后将建置好的指令存入一存储器(Memory)。下面将结合图2A、2B和2C,对软件建置的指令在存储器中的存储方式,以及指令、进阶主机控制器和硬盘之间的关系进行说明。
图2A是依照本发明一实施例绘示的进阶主机控制器与存储器中的命令之间的对应关系的示意图。图2A的右半部为储存于存储器30里的数据结构,包含指令清单221、231等,以及指令列表222、223等。图2A的左半部为进阶主机控制器22中的寄存器组212。寄存器组212中包含多个端口寄存器,每个端口寄存器对应一个端口(Port),例如端口寄存器0对应端口0(Port 0)、端口寄存器1对应端口1(Port 1)…端口寄存器31对应端口31(Port31)。每个端口对应一个硬盘。例如,端口0对应图1A或图1B中的硬盘35。
如图2A所示,指令清单用于存储指令头,一个指令清单中包含多个指令头。例如,指令清单221中包含32个指令头(指令头0-31,即Command Header 0-31)。指令清单221中的每个指令头具有一个编号,比如指令头0的编号为0,指令头1的编号为1,依此类推。每个端口寄存器指向一个指令清单。例如,端口寄存器0指向指令清单221,端口寄存器31指向指令清单231,等等。指令清单中的每个指令头指向一个指令列表。比如,指令清单221中的指令头0指向指令列表222,指令清单221中的指令头31指向指令列表 223,等等。每个指令列表中包含一个指令帧信息结构(Command FIS)以及多个硬件区域描述符条目(PhysicalRegion Descriptor Entry,PRD条目)。例如,指令列表222中包含一个指令帧信息结构以及n+1个PRD条目(PRD Entry 0-n)。
下面通过图2B和图2C说明端口寄存器和指令头的格式。
图2B是依照本发明一实施例绘示的端口寄存器的示意图。如图2B所示,每个端口寄存器包含指令清单起始地址等字段。指令清单起始地址字段用于储存指令清单的起始地址。例如,端口寄存器0的指令清单起始地址字段储存指令清单221的起始地址(即端口寄存器0指向指令清单221);端口寄存器31的指令清单起始地址字段储存指令清单231的起始地址(即端口寄存器31指向指令清单231),等等。
图2C是依照本发明一实施例绘示的指令头的示意图。如图2C所示,每个指令头包含指令列表起始地址、PRD表长度等字段。指令列表起始地址字段用于储存指令列表的起始地址。例如,指令清单221的指令头0的指令列表起始地址字段储存指令列表222的起始地址;指令清单221的指令头31的指令列表起始地址字段储存指令列表223的起始地址,等等。PRD表长度字段用于储存指令列表中PRD条目的个数。比如,指令清单221的指令头0的 PRD表长度字段储存指令列表222中PRD条目的个数;指令清单221的指令头31的PRD表长度字段储存指令列表223中PRD条目的个数,等等。
图3是依照本发明一实施例绘示的进阶主机控制器的方块图。如图3所示,进阶主机控制器22耦接于存储器30与硬盘35之间。进阶主机控制器22 包含指令控制器310和数据控制器320。指令控制器310包含指令清单高速缓存结构311。指令控制器310耦接数据控制器320。数据控制器320包含 PRD表高速缓存模块321。
如前所述,传输数据的过程分为发送指令和传送数据两个阶段。在发送指令阶段,指令控制器310从存储器30读取指令头(比如,从图2A所示的指令清单221中读取指令头0),并将上述指令头存入指令清单高速缓存结构 311。然后,指令控制器310根据上述指令头从存储器30读取指令帧信息结构(比如,从图2A所示的指令列表222中读取指令帧信息结构)。指令控制器310将上述指令帧信息结构发送给硬盘35。在传送数据阶段,指令控制器 310还接收来自硬盘35的数据传输请求。指令控制器310根据上述数据传输请求,从指令清单高速缓存结构311读取上述指令头。指令控制器310将上述指令头发送给数据控制器320。数据控制器320根据上述指令头完成存储器30和硬盘35之间的传送数据操作。
以指令头0为例,在发送指令阶段,指令控制器310根据如图2B所示的端口寄存器0中的指令清单起始地址,从存储器30中的指令清单221读取指令头0(如图2A所示),并把指令头0存入指令清单高速缓存结构311。再根据如图2C所示的指令头0中的指令列表起始地址,从指令列表222中读取指令帧信息结构(Command FIS,如图2A所示)。然后把指令帧信息结构发送给硬盘35。在传送数据阶段,硬盘35发送传输数据请求给指令控制器 310。指令控制器310接收到传输数据请求后,从指令清单高速缓存结构311 读取上述指令头0。指令控制器310将上述指令头0发送给数据控制器320。数据控制器320根据上述指令头0中的指令列表起始地址,从指令列表222 中读取多个PRD条目(如图2A所示)。数据控制器320将读取到的多个PRD 条目存入PRD表高速缓存模块321中。然后,数据控制器320每次从PRD 表高速缓存模块321读取一个PRD条目,并根据PRD条目传送数据。当PRD 表高速缓存模块321中存放的PRD条目用完之后,数据控制器320再从存储器30中读取多个PRD条目。以此类推,直到处理完上述指令头0所指向的指令列表222中的所有PRD条目。
请参照图4,图4是依照本发明一实施例绘示的指令控制器的方块图。如图4所示,指令控制器310中的指令清单高速缓存结构311还包含多个指令头寄存器。例如在图4的例子中,指令清单高速缓存结构311包含32个指令头寄存器CMD_CACHE0~CMD_CACHE31。指令控制器310中还包含指令高速缓存结构控制器410、信号接收器430以及选择控制器420。指令高速缓存结构控制器410耦接于存储器30与指令清单高速缓存结构311之间。
在发送指令阶段,选择控制器420选择一个指令头寄存器,来存储从存储器30读取到的指令头。举例来说,当处理指令头0时,选择控制器420选择指令头寄存器CMD_CACHE0来存储指令头0。当处理指令头1时,选择控制器420选择指令头寄存器CMD_CACHE1来存储指令头1,依此类推。
在发送数据阶段,指令控制器310接收到硬盘35发送来的传输数据请求后,从上述传输数据请求中读取指令头编号。指令高速缓存结构控制器410 把上述指令头编号传给信号接收器430。然后,指令清单高速缓存结构311把与上述指令头编号对应的指令头寄存器中存储的指令头输出到指令高速缓存结构控制器410。举例来说,当指令头编号为0时,指令清单高速缓存结构 311把与上述指令头编号对应的指令头寄存器CMD_CACHE0中存储的指令头0输出到指令高速缓存结构控制器410。当指令头编号为1时,指令清单高速缓存结构311把与上述指令头编号对应的指令头寄存器CMD_CACHE1 中存储的指令头1输出到指令高速缓存结构控制器410,依此类推。
图5A是依照本发明一实施例绘示的发送指令的流程图。如图5B所示,在发送指令阶段,图3中的指令控制器310从存储器30读取指令头(S501A)。指令控制器310把上述指令头存入指令清单高速缓存结构311(S503A)。指令控制器310根据上述指令头从存储器中读取指令帧信息结构,并把上述指令帧信息结构发送给硬盘35(S505A)。下面,以在存储器30与硬盘35之间传输数据为例,对图5A所示的发送指令流程进行说明。我们假定端口0对应硬盘35。
首先,指令控制器310执行步骤S501A。在步骤S501A中,指令控制器 310从存储器30读取指令头。具体而言,当需要在存储器30和硬盘35之间传输数据时,软件先在存储器30中建置指令列表222(如图2A所示)。然后,软件建置指令头0,并把指令列表222的起始地址和指令列表222中的PRD 条目数量,分别存入如图2C所示的指令头0的指令列表起始地址和PRD表长度字段中。然后,软件建置指令清单221(如图2A所示),并把指令头0存入指令清单221中。然后,软件把指令清单221的起始地址存入如图2B所示的端口寄存器0的指令清单起始地址字段中。最后,软件通知进阶主机控制器22处理指令头0。进阶主机控制器22接收到软件的上述通知后,指令高速缓存结构控制器410根据端口寄存器0中存储的指令清单起始地址,从指令清单221中读取到指令头0。然后,指令控制器310执行步骤S503A。
在步骤S503A中,指令控制器310把上述指令头存入指令清单高速缓存结构311。具体而言,指令控制器310的指令高速缓存结构控制器410,把上述指令头0存入指令清单高速缓存结构311的指令头寄存器CMD_CACHE0 中。如图4所示,指令高速缓存结构控制器410是通过选择控制器420将指令头0存入指令头寄存器CMD_CACHE0中的。然后,指令控制器310执行步骤S505A。
在步骤S505A中,指令控制器310根据上述指令头从存储器中读取指令帧信息结构,并把上述指令帧信息结构发送给硬盘35。具体而言,指令控制器310的指令高速缓存结构控制器410,从上述指令头0中读取指令列表起始地址。然后,指令高速缓存结构控制器410根据上述指令列表起始地址从指令列表222中读取指令帧信息结构。然后把上述指令帧信息结构发送给硬盘35。硬盘35接收到上述指令帧信息结构后,根据上述指令帧信息结构生成一个本地指令(native command)。然后,硬盘35把上述本地指令存入硬盘 35中的本地指令队列(native command queue,NCQ)中,并根据本地指令产生数据传输请求。
图5B是依照本发明一实施例绘示的传送数据的流程图。如图5B所示,在传送数据阶段,指令控制器310接收到数据传输请求(S501B)。指令控制器310根据上述数据传输请求从指令清单高速缓存结构读取指令头(S503B)。指令控制器310根据上述指令头传送数据(S505B)。
首先,指令控制器310执行步骤S501B。在步骤S501B中,指令控制器 310接收到数据传输请求。具体而言,硬盘35从本地指令队列中读取一个本地指令,并根据上述本地指令生成数据传输请求。然后,硬盘35把上述数据传输请求发送给指令控制器310。指令控制器310接收到上述数据传输请求后,执行步骤S503B。
在步骤S503B中,指令控制器310从指令清单高速缓存结构311读取指令头。具体而言,指令控制器310的指令高速缓存结构控制器410从上述数据传输请求中读取指令头编号0(由前文可知,指令头0的指令头编号为0)。然后,指令高速缓存结构控制器410将上述指令头编号0传给信号接收器430。然后,指令清单高速缓存结构311把指令头寄存器CMD_CACHE0中存储的指令头0传送给指令高速缓存结构控制器410。然后,指令控制器310执行步骤S505B。
在步骤S505B中,指令控制器310根据上述指令头传送数据。具体而言,指令高速缓存结构控制器410把指令头0传送给数据控制器320。然后,数据控制器320根据指令头0传送数据(后文会详述)。
请参照图6,图6是依照本发明一实施例绘示指令控制器的操作的波形图。图6的波形是假设软件建置了3个指令(包括指令头和指令列表):指令0 (包括指令头0)、指令1(包括指令头1)和指令2(包括指令头2)。并假设在发送指令阶段,指令控制器310按指令0、指令1和指令2的顺序把这3个指令的指令帧信息结构发送给了硬盘35。还假设在传送数据阶段,硬盘35按指令2、指令1和指令0的顺序向指令控制器310发送数据传送请求。值得注意的是,在传送数据阶段,指令控制器直接从指令头寄存器 (CMD_CACHE0~CMD_CACHE31)读取指令头,不用到存储器30去取指令头。因而减少了访问存储器的次数,从而达到减轻存储器控制器的工作负担、使整体系统更有效率取得数据的效果。
在图6中,信号CURCMD是在发送命令阶段的指令头编号。在发送命令阶段,指令高速缓存结构控制器410根据指令头编号CURCMD,将指令头 0、指令头1以及指令头2分别写入指令头寄存器 CMD_CACHE0~CMD_CACHE2中。信号Q_TAG是在传送数据阶段的指令头编号,是从硬盘35发来的数据传输请求所取得。在传送数据阶段,指令高速缓存结构控制器410根据指令头编号Q_TAG从指令清单高速缓存结构311 读取相应的指令头。信号FETCHCL_1ST是指在发送指令阶段,从存储器30 读取指令头的指示信号。指令头寄存器CMD_CACHE0~CMD_CACHE2是分别为指令清单高速缓存结构311中的第0个单元、第1个单元及第2个单元。信号CACHEIN是从存储器30取来的,传送给指令清单高速缓存结构311的指令头;CACHEOUT是在收到数据传输请求后,从指令清单高速缓存结构 311取出的指令头;信号GETCACHE是指收到数据传输请求后,第二次读取指令头的指示信号。
如图6所示,在发送指令阶段,指令控制器310接收到软件的发送指令通知后,在时钟CLK为T1时,将信号FETCHCL_1ST拉起以从存储器30读取指令头0。指令控制器310将信号CURCMD设置为0,并将读取到的指令头0输出到信号CACHEIN。在时钟CLK为T2时,指令控制器310把信号 CACHEIN中的指令头0(c0)写入由信号CURCMD选择的指令头寄存器 CMD_CACHE0中。在时钟CLK为T4时,指令控制器310将信号FETCHCL_1ST拉起以从存储器30读取指令头1(c1)。指令控制器310将信号CURCMD设置为1,并将读取到的指令头1输出到信号CACHEIN。在时钟CLK为T5时,指令控制器310把信号CACHEIN中的指令头1(c1)写入由信号CURCMD选择的指令头寄存器CMD_CACHE1中。在时钟CLK为 T6时,指令控制器310将信号FETCHCL_1ST拉起以从存储器30读取指令头2(c2)。指令控制器310将信号CURCMD设置为2,并将读取到的指令头2输出到信号CACHEIN。在时钟CLK为T7时,指令控制器310把信号 CACHEIN中的指令头2(c2)写入由信号CURCMD选择的指令头寄存器 CMD_CACHE2。
在传送数据阶段,指令控制器310接收到数据传输请求后,在时钟CLK 为T9时,指令控制器310将信号GETCACHE拉起以从指令清单高速缓存结构311读取指令头2(c2)。指令控制器310将信号Q_TAG设置为2。指令控制器310从由信号Q_TAG选择的指令头寄存器CMD_CACHE2读取指令头 2,并将指令头2写入信号CACHEOUT。在时钟CLK为T12时,指令控制器310将信号GETCACHE拉起以从指令清单高速缓存结构311读取指令头 1(c1)。指令控制器310将信号Q_TAG设置为1。指令控制器310从由信号 Q_TAG选择的指令头寄存器CMD_CACHE1读取指令头1,并将指令头1写入信号CACHEOUT。在时钟CLK为T14时,指令控制器310将信号GETCACHE拉起以从指令清单高速缓存结构311读取指令头0(c0)。指令控制器310将信号Q_TAG设置为0。指令控制器310从由信号Q_TAG选择的指令头寄存器CMD_CACHE0读取指令头0,并将指令头0写入信号 CACHEOUT。
请参照图7,图7是依照本发明一实施例绘示数据控制器320的示意图。于一实施例中,数据控制器320耦接于存储器30与硬盘35之间(未示出)。数据控制器320还耦接指令控制器310。如前所述,在传送数据阶段,指令控制器310发送指令头给数据控制器320。数据控制器根据上述指令头在存储器30和硬盘35直接传送数据。
如图7所示,数据控制器320包含PRD控制器710和PRD表高速缓存模块321。PRD控制器710耦接PRD表高速缓存模块321。PRD控制器710 根据上述指令头每次从PRD表高速缓存模块321读取一个PRD条目。然后, PRD控制器710根据读取到的上述PRD条目传送数据。直到处理完上述指令头的所有PRD条目。PRD表高速缓存模块321接收到PRD控制器710的读取PRD条目请求后,先查看其PRD寄存器中是否保存着尚未处理的PRD 条目。如果PRD寄存器中保存着尚未处理的PRD条目,PRD表高速缓存模块321会把尚未处理的PRD条目发给PRD控制器710;否则,PRD表高速缓存模块321从存储器30读取至少一个PRD条目。PRD表高速缓存模块321 将读取到的第一个PRD条目直接发送给PRD控制器710,并将读取到的其它PRD条目存入PRD寄存器中。
PRD控制器710包含地址寄存器711和寄存器713。地址寄存器711用以储存当前正在处理的PRD条目的地址。寄存器713用于储存从指令控制器 310接收到的指令头。
如图7所示,PRD表高速缓存模块321包含多个PRD寄存器E1~E3、寄存器323、寄存器324、寄存器325及寄存器326。PRD寄存器(E1~E3) 用于暂存从存储器30读取到的上述指令头所指向的指令列表中的PRD条目。寄存器323用于存储从存储器30读回的上述指令头所指向的指令列表中的 PRD条目数量。寄存器324用于存储存储器30中剩余的上述指令头所指向的指令列表中的PRD条目的数量。寄存器325用于存储PRD表高速缓存模块中当前暂存的PRD条目的数量。寄存器326用于存储PRD表高速缓存模块中暂存的将被读取的PRD条目的编号。然本领域具通常知识者应可理解,图7仅为一例子,PRD表高速缓存模块321可包含一个或更多个PRD寄存器。
PRD表高速缓存模块321还包含状态机322。PRD表高速缓存模块321 在状态机322的控制下,从存储器30读取PRD条目,以及将从存储器30读取到的条目发送给PRD控制器710。
于一实施例中,PRD表高速缓存模块321每次从存储器30读取4个PRD 条目。PRD表高速缓存模块321将读取到的第一个PRD条目直接发送给PRD 控制器710,并将读取到的第二、三和四个PRD条目分别依次存入PRD寄存器E1、E2和E3。之后,PRD控制器710从PRD表高速缓存模块321读取第二、第三和第四PRD条目时,PRD表高速缓存模块321可以直接将存储在PRD寄存器E1、E2和E3中的PRD条目发送给PRD控制器710,而不需要再次从存储器30中读取。
图8是依照本发明一实施例绘示的数据控制器的传输数据的流程图。如图8所示,数据控制器320接收指令头(S801)。PRD控制器710根据上述指令头生成第一读取请求(S803)。PRD表高速缓存模块321判断暂存的PRD 条目是否都处理完(S805)?如果判断结果为“是”,PRD表高速缓存模块321 从存储器30读取PRD条目;否则,PRD表高速缓存模块321从PRD寄存器中读取一个PRD条目发送给PRD控制器710。
下面详细说明图8所示的处理流程,数据控制器320先执行步骤S801。
在步骤S801中,数据控制器320接收指令头0。具体而言,如前所述,在传送数据阶段,指令控制器310发送指令头0给数据控制器320。数据控制器320接收上述指令头0,并把上述指令头0存储在PRD控制器710的寄存器713中。然后,PRD控制器710根据上述指令头0中存储的指令列表起始地址计算出指令列表222中第一个PRD条目的地址,并把指令列表222中第一个PRD条目的地址存入地址寄存器711中。数据控制器320从上述指令头0中读取PRD表长度,并把PRD表长度存入PRD表高速缓存模块321中的寄存器324中。数据控制器320把PRD表高速缓存模块321中的寄存器 323、325和326都设置为0。然后,PRD控制器710执行步骤S803。
在步骤S803中,PRD控制器710根据上述指令头0生成第一读取请求。具体而言,PRD控制器710根据上述指令头0生成第一读取请求,上述第一读取请求中包含地址寄存器711中存储的要读取的PRD条目的地址。指令列表222中的第一个PRD条目的地址可以通过指令列表222的起始地址加第一个PRD条目在指令列表222中的偏移量得到。每个PRD条目在指令列表222 中的长度是固定的,所以第二个PRD条目的地址可以通过第一个PRD条目的地址加PRD条目的长度得到。以此类推,就可以得到指令列表222中每一个PRD条目的地址。PRD控制器710生成第一读取请求后,会把第一读取请求发送给PRD表高速缓存模块321。然后,PRD控制器710使用前面描述的方法,把地址寄存器711中的地址改为将要读取的下一个PRD条目的地址。然后,PRD表高速缓存模块执行步骤S805。
在步骤S805中,PRD表高速缓存模块321判断暂存的PRD条目是否都处理完?具体来说,PRD表高速缓存模块321判断寄存器325中存储的值是否为0?如果寄存器325中存储的值为0,表示PRD表高速缓存模块321暂存的PRD条目都处理完了,判断结果为“是”。如果寄存器325中存储的值不为0,表示PRD表高速缓存模块321暂存的PRD条目还没处理完,判断结果为“否”。如果判断结果为“否”,PRD表高速缓存模块321执行步骤S811;如果判断结果为“是”,PRD表高速缓存模块321执行步骤S807。下面先描述步骤S807。
在步骤S807中,PRD表高速缓存模块321根据第一读取请求生成第二读取请求,并根据第二读取请求从存储器30读取PRD条目。具体来说,第二读取请求包含要读取的PRD条目的地址和要读取的数据长度等字段。PRD 表高速缓存模块321将第一读取请求中的要读取的PRD条目的地址字段的值设置为第二读取请求的要读取的PRD条目的地址。PRD表高速缓存模块321 将第二读取请求的要读取的数据长度字段的值设置为1,表示要从存储器30中读取4个PRD条目。在另一实施例中,PRD表高速缓存模块321将第二读取请求的要读取的数据长度字段的值设置为0,表示要从存储器30中读取1 个PRD条目。PRD表高速缓存模块321生成第二读取请求后,将上述第二读取请求发送给存储器控制器(未示出)。然后,存储器控制器将从存储器30读取PRD条目,并将读取到的PRD条目发送给PRD表高速缓存模块321。然后,PRD表高速缓存模块321执行步骤S809。
在步骤S809中,PRD表高速缓存模块321返回读取到的第1个PRD条目,暂存其它的PRD条目。具体而言,PRD表高速缓存模块321将把读取到的第1个PRD条目发送给PRD控制器710,然后把其它的PRD条目存入 PRD寄存器E1-E3中。比如,PRD表高速缓存模块321把读取到的第2个 PRD条目存储到PRD寄存器E1中,把读取到的第3个PRD条目存储到PRD 寄存器E2中,把读取到的第4个PRD条目存储到PRD寄存器E3中。然后, PRD表高速缓存模块321把寄存器323中存储的值(从存储器30中读回的 PRD条目数量)设置为4,把寄存器324中存储的值(存储器30中剩余的 PRD条目数量)减少4,把寄存器325中存储的值(PRD表高速缓存模块中暂存的PRD条目数量)设置为3,把寄存器326中存储的值(将被读取的PRD 表高速缓存模块中暂存的PRD条目的编号)设置为1。然后,PRD控制器710 执行步骤S813。
在步骤S813中,PRD控制器710根据读取到的PRD条目传输数据。本领域技术人员都了解如何根据PRD条目传输数据,此处就不赘述了。执行完步骤S813之后,PRD控制器710执行步骤S815。
在步骤S815中,PRD控制器710判断上述指令头的PRD条目是否都已经处理完?具体而言,PRD控制器710根据寄存器713中存储的上述指令头,计算出最后一个PRD条目的地址(可通过指令列表起始地址加最后一个PRD 条目在指令列表中的偏移量得到)。如果地址寄存器711中存储的地址大于最后一个PRD条目的地址,表示上述指令头的PRD条目都已经处理完,判断结果为“是”;否则,判断结果为“否”。如果判断结果为“是”,数据控制器 320完成上述指令头的数据传输操作。如果判断结果为“否”,数据控制器320 将再次执行步骤S803-S815,直到完成上述指令头的数据传输操作。
在步骤S805中,当判断结果为“否”时,执行步骤S811。
在步骤S811中,PRD表高速缓存模块321返回一个PRD条目。具体而言,PRD表高速缓存模块321根据寄存器326中存储的PRD条目编号,从 PRD寄存器中读取一个PRD条目,并把读取到的PRD条目发送给PRD控制器710。然后,PRD表高速缓存模块321把寄存器326中的值(将被读取的 PRD表高速缓存模块中暂存的PRD条目的编号)增加1,把寄存器325中的值(PRD表高速缓存模块中暂存的PRD条目数量)减少1。然后PRD控制器710执行步骤S813。前文已经对步骤S813进行了描述,此处就不再赘述了。
图9是依照本发明一实施例绘示的数据控制器读取PRD条目的波形图。于图9中,第一组信号为PRD控制器710发送给PRD表高速缓存模块321 的信号。PRD表高速缓存模块321接收到第一组信号后,将发送一个PRD条目给PRD控制器710。第一组信号包含信号PRD_MA_PRDCTL及信号 PRD_ADS_PRDCTL。信号PRD_MA_PRDCTL(可以是32位)表示要读取的 PRD条目的地址,包含于前述的第一读取请求中。信号PRD_ADS_PRDCTL 表示读取PRD条目的指示信号,将信号PRD_ADS_PRDCTL拉起,表示开始读取PRD条目。
第二组信号为PRD表高速缓存模块321发给存储器控制器的信号。存储器控制器接收到第二组信号后,将发送至少一个PRD条目给PRD表高速缓存模块320。第二组信号包含信号BUF_PRD_ADS、信号BUF_PRD_ML及信号BUF_PRD_MA。信号BUF_PRD_ADS为读取PRD条目的指示信号,将信号BUF_PRD_ADS拉起表示开始从存储器30读取PRD条目。信号 BUF_PRD_ML为要读取的PRD条目的个数。将信号BUF_PRD_ML拉起(以值1表示拉起)表示一次可以从存储器30读取4个PRD条目,信号BUF_PRD_ML重置(以值0表示重置)表示一次可以从存储器30读取1个PRD条目。信号PRD_MA_PRDCTL(可以是32位)为将要从存储器30中读取的第一个PRD条目的地址。
第三组信号为从存储器30返回的信号。第三组信号包含信号WPSH、信号WD及信号WRDY。信号WPSH为从存储器30读回PRD条目的指示信号,将信号WPSH拉起表示存储器30开始返回PRD条目。信号WD(可以是 128位)为从存储器30读回的PRD条目。信号WRDY为从存储器30读取 PRD条目完成信号。将信号WRDY拉起,表示当前从信号WD读取的PRD 条目为本次读取的最后一个PRD条目。
第四组信号为从PRD表高速缓存模块321返回给PRD控制器710的数据信号。第四组信号包含信号BUF_WPSH、信号BUF_WD、信号BUF_WRDY。信号BUF_WPSH为从PRD表高速缓存模块321返回PRD条目的指示信号,信号BUF_WPSH被拉起表示PRD表高速缓存模块321开始给PRD控制器 710返回PRD条目。信号BUF_WD为从PRD表高速缓存模块321返回的 PRD条目。信号BUF_WRDY为从PRD表高速缓存模块321返回PRD条目完成的信号。信号BUF_WRDY被拉起,表示PRD表高速缓存模块321完成了把PRD条目发送给PRD控制器710的操作。
第五组信号为关于PRD条目、状态机PRDTC_FSM、计数器的信号。第五组信号包含信号PRD_ENTRY1、信号PRD_ENTRY2、信号PRD_ENTRY3、信号PRDTC_FSM、信号PRDT_REM、信号PRDTC_REM、信号PRDTC_NUM 及信号PSH_CNT。信号PRD_ENTRY1、信号PRD_ENTRY2及信号PRD_ENTRY3(可以是128位)为各自从PRD寄存器E1、E2及E3开始读取或写入的PRD条目。如前所述,PRD表高速缓存模块321每次从存储器30 最多读取4个PRD条目。PRD表高速缓存模块321将第1个PRD条目直接发送给PRD控制器710,并将第2个~第4个PRD条目各自依次暂存到PRD 寄存器E1、E2及E3。信号PRDT_REM(可以是16位)为寄存器324中记录的整个PRD表中剩余未被读取的PRD条目数量。信号PRDTC_REM(可以是 2位)为寄存器325中记录的PRD表高速缓存模块321中暂存的PRD条目的数量、信号PRDTC_NUM(可以是2位)为寄存器326中记录的将被读取的PRD 条目的编号。信号PSH_CNT(可以是2位)为寄存器323中记录的从存储器30读回的PRD条目数量。信号PRDTC_FSM为状态机522的状态信号。信号PRDTC_FSM为00表示PRD表高速缓存模块321处于空闲状态。信号 PRDTC_FSM为02表示PRD表高速缓存模块321处于填充状态。在填充状态,PRD表高速缓存模块321将从存储器30读取到的PRD条目存入PRD寄存器E1-E3中。信号PRDTC_FSM为03表示PRD表高速缓存模块321处于返回数据状态。在返回数据状态,PRD表高速缓存模块321将PRD寄存器中的PRD条目发送给PRD控制器710。
从图9可看出,信号PRD_ADS_PRDCTL共4个脉冲,表示PRD控制器719发了4次读取PRD条目的请求,共读取4个PRD条目。信号 BUF_PRD_ADS只有一个脉冲,表示进阶主机控制器22实际只对存储器30 发送一次读PRD条目的请求。下面详细描述图9所示的波形图。为便于描述,我们假设指令头0中的PRD表长度为4(即指令头0所指向的指令列表中只包含4个PRD条目)。
在时钟CLK为T0时,状态机322的状态PRDTC_FSM为00(空闲状态)。由于指令头0中的PRD表长度为4,PRD控制器710将PRD_REM设置为 4,并且PRD控制器710根据前文所述的方法计算出第1个PRD条目的地址为a0。PRD控制器710将指令头0的第1个PRD条目的地址a0传给信号 PRD_MA_PRDCTL,并拉起信号PRD_ADS_PRDCTL。PRD表高速缓存模块 321拉起信号BUF_PRD_ADS和BUF_PRD_ML,并把信号 PRD_MA_PRDCTL中的地址a0传给信号BUF_PRD_MA。
在时钟CLK为T1时,状态机322的状态PRDTC_FSM为02(填充状态)。信号BUF_PRD_ADS和BUF_PRD_ML都被重置,信号WPSH被拉起并且信号WRDY处于重置状态,PRD表高速缓存模块321通过信号WD接收从存储器30返回的第1个PRD条目d0。信号PRD_ADS_PRDCTL被重置,信号BUF_WPSH被拉起,PRD控制器710通过信号BUF_WD接收从 PRD表高速缓存模块321返回的第1个PRD条目d0;由于信号BUF_WRDY 被拉起,PRD控制器710在时钟CLK为T1时接收完第1个PRD条目d0。信号PSH_CNT变为1,表示从存储器30读回第1个PRD条目d0。
在时钟CLK为T2时,状态机322的状态PRDTC_FSM还是02(填充状态)。信号WPSH还是处于拉起状态,信号WRDY还是处于重置状态。PRD 表高速缓存模块321通过信号WD接收从存储器30返回的第2个PRD条目 d1。信号PSH_CNT变为2,表示从存储器30读回第2个PRD条目d1。
在时钟CLK为T3时,PRD表高速缓存模块321将第2个PRD条目d1 存入PRD寄存器E1,信号PRD_ENTRY1的值变为d1。信号WPSH还是处于拉起状态,信号WRDY还是处于重置状态。PRD表高速缓存模块321通过信号WD接收从存储器30返回的第3个PRD条目d2。信号PSH_CNT变为3,表示从存储器30读回第3个PRD条目d2。
在时钟CLK为T4时,PRD表高速缓存模块321将第3个PRD条目d2 存入PRD寄存器E2,信号PRD_ENTRY2的值变为d2。信号WPSH还是处于拉起状态。信号WRDY被拉起,表示这是本次读取的最后一个PRD条目。 PRD表高速缓存模块321通过信号WD接收从存储器30返回的第4个PRD 条目d3。信号PSH_CNT变为4,表示从存储器30读回第四个PRD条目d3。
在时钟CLK为T5时,PRD表高速缓存模块321将第3个PRD条目d3 存入PRD寄存器E3,信号PRD_ENTRY3的值变为d3。信号WPSH和信号 WRDY被重置,表示完成从存储器30读取PRD条目的操作。信号 PRDTC_REM被设置为3,表示PRD表高速缓存模块中暂存的PRD条目数量为3。信号PRDTC_NUM被设置为1,表示将被读取的PRD表高速缓存模块中暂存的PRD条目的编号为1。
在时钟CLK为T7时,状态机322的状态PRDTC_FSM为00(空闲状态)。 PRD控制器710根据前文所述的方法计算出第2个PRD条目的地址为a1。 PRD控制器710将指令头0的第2个PRD条目的地址a1传给信号 PRD_MA_PRDCTL,并拉起信号PRD_ADS_PRDCTL。
在时钟CLK为T8时,状态机322的状态PRDTC_FSM为03(返回数据状态)。信号BUF_WPSH和信号BUF_WRDY同时被拉起,PRD控制器710 通过信号BUF_WD接收从PRD表高速缓存模块321返回的第2个PRD条目 d1;由于信号BUF_WRDY被拉起,PRD控制器710在时钟CLK为T8时接收完第二个PRD条目d1。
在时钟CLK为T9时,状态机322的状态PRDTC_FSM为00(空闲状态)。信号BUF_WPSH和信号BUF_WRDY被重置,表示PRD控制器710完成读取PRD条目的操作。信号PRDTC_REM被设置为2,表示PRD表高速缓存模块中暂存的PRD条目数量为2。信号PRDTC_NUM被设置为2,表示将被读取的PRD表高速缓存模块321中暂存的PRD条目的编号为2。
在时钟CLK为T10时,状态机322的状态PRDTC_FSM为00(空闲状态)。PRD控制器710根据前文所述的方法计算出第3个PRD条目的地址为 a2。PRD控制器710将指令头0的第3个PRD条目的地址a2传给信号 PRD_MA_PRDCTL,并拉起信号PRD_ADS_PRDCTL。
在时钟CLK为T11时,状态机322的状态PRDTC_FSM为03(返回数据状态)。信号BUF_WPSH和信号BUF_WRDY同时被拉起,PRD控制器710 通过信号BUF_WD接收从PRD表高速缓存模块321返回的第3个PRD条目 d2;由于信号BUF_WRDY被拉起,PRD控制器710在时钟CLK为T11时接收完第3个PRD条目d2。
在时钟CLK为T12时,状态机322的状态PRDTC_FSM为00(空闲状态)。信号BUF_WPSH和信号BUF_WRDY被重置,表示PRD控制器710完成读取PRD条目的操作。信号PRDTC_REM被设置为1,表示PRD表高速缓存模块中暂存的PRD条目数量为1。信号PRDTC_NUM被设置为3,表示将被读取的PRD表高速缓存模块321中暂存的PRD条目的编号为3。
在时钟CLK为T13时,状态机322的状态PRDTC_FSM为00(空闲状态)。PRD控制器710根据前文所述的方法计算出第4个PRD条目的地址为 a3。PRD控制器710将指令头0的第4个PRD条目的地址a3传给信号 PRD_MA_PRDCTL,并拉起信号PRD_ADS_PRDCTL。
在时钟CLK为T14时,状态机322的状态PRDTC_FSM为03(返回数据状态)。信号BUF_WPSH和信号BUF_WRDY同时被拉起,PRD控制器710 通过信号BUF_WD接收从PRD表高速缓存模块321返回的第4个PRD条目 d3;由于信号BUF_WRDY被拉起,PRD控制器710在时钟CLK为T14时接收完第4个PRD条目d3。
在时钟CLK为T15时,状态机322的状态PRDTC_FSM为00(空闲状态)。信号BUF_WPSH和信号BUF_WRDY被重置,表示PRD控制器710完成读取PRD条目的操作。信号PRDTC_REM被设置为0,表示PRD表高速缓存模块中暂存的PRD条目数量为0。信号PRDTC_NUM被设置为0,表示PRD表高速缓存模块321中没有暂存PRD条目。
请参阅图10,图10是依照本发明一实施例绘示的硬件区域描述表高速缓存模块的状态机的状态转换图。当信号PRDTC_FSM为00时,表示状态机 322为闲置状态。当信号PRDTC_FSM为02时,表示状态机322为填充状态。当信号PRDTC_FSM为03时,表示状态机322为返回数据状态。信号WRDY为从存储器30读取数据完成信号。当信号WRDY被拉起时,状态机322由填充状态切为闲置状态。信号BUF_WRDY为从PRD表高速缓存模块 321返回给PRD控制器710的数据完成信号。当信号BUF_WRDY被拉起时,状态机322由返回数据状态切为闲置状态。当PRD表高速缓存模块321中暂存的PRD条目的数量为0,且接收到来自PRD控制器710的读取请求时(此状态可用信号写成虚拟码表示为“PRD_ADS_PRDCTL& (PRDTC_REM)==0”),则状态机322由闲置状态切为填充状态。当PRD表高速缓存模块321中暂存的PRD条目的数量不为0,且接收到来自PRD控制器710的读取请求时(此状态可用信号写成虚拟码表示为“PRD_ADS_PRDCTL&(PRDTC_REM)!==0”),则状态机322由闲置状态切为返回数据状态。
综上,本申请的进阶主机控制器及控制方法,在进行数据传输的过程中,通过暂存指令头及PRD条目,减少了访问存储器的次数,从而达到使整体系统更有效率地取得数据的效果。
关于本发明其他附加的特征与优点,此领域的熟习技术人士,在不脱离本申请的精神和范围内,当可根据本申请实施方法中所揭露的数据处理装置及数据处理方法做些许的更动与润饰而得到。
【符号说明】
100、150:数据处理装置
10:处理器
20:芯片组
22:进阶主机控制器
30:存储器
35:硬盘
60:总线
42:进阶主机控制器
35:硬盘
Command Header 0~Command Header 31:指令头
411:外部链接标准寄存器
412:存储器映射输入输出
Port 0~Port 31:端口寄存器
222:指令列表
Command FIS:指令帧信息结构
PRD Entry 0~PRD Entry n:PRD条目
30:存储器
310:指令控制器
320:数据控制器
321:PRD表高速缓存模块
311:指令清单高速缓存结构
410:指令高速缓存结构控制器
420:选择控制器
430:信号接收器
CLK:时钟
CACHEOUT、CACHEIN、FETCHCL_1ST、GETCACHE、Q_TAG、 CL_PRDLEN、PRD_MA_PRDCTL、PRD_ADS_PRDCTL、PRD_ML_PRDCTL、 PRDTC_FSM、PRDT_REM、PRDTC_REM、PRDTC_NUM、BUF_PRD_ADS、 BUF_PRD_ML、PRD_MA_PRDCTL、WPSH、WRDY、WD、PSH_CNT、PRD_ENTRY1~PRD_ENTRY3、BUF_WRDY、BUF_WPSH、BUF_WD:信号
322:状态机
323~326:寄存器
E1~E3:PRD寄存器
710:PRD控制器
711:PRD表
713:寄存器
CMD_CACHE0~CMD_CACHE31:指令头寄存器
S501A~S505A:步骤
S501B~S505B:步骤
S801~S815:步骤
c0~c2:指令头
d0~d3:PRD条目。
Claims (20)
1.一种进阶主机控制器(Advanced Host Controller),包含:
硬件区域描述表控制器;以及
硬件区域描述表高速缓存模块,耦接所述硬件区域描述表控制器,所述硬件区域描述表高速缓存模块从存储器读取至少一个硬件区域描述符条目,存储所述至少一个硬件区域描述符条目;
其中,所述硬件区域描述表高速缓存模块还包括状态机,在所述状态机的控制下,所述硬件区域描述表控制器从所述硬件区域描述表高速缓存模块获取一硬件区域描述符条目,根据所述硬件区域描述符条目传输数据,其中,所述硬件区域描述符条目是所述至少一个硬件区域描述符条目之一。
2.如权利要求1所述的进阶主机控制器,其中,所述硬件区域描述表高速缓存模块从所述硬件区域描述表控制器接收第一读取请求,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目未用完时,所述硬件区域描述表高速缓存模块根据所述第一读取请求,把所述硬件区域描述符条目发送给所述硬件区域描述表控制器。
3.如权利要求2所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目的数量大于0时,表示存储的硬件区域描述符条目未用完。
4.如权利要求1所述的进阶主机控制器,其中,所述硬件区域描述表高速缓存模块从所述硬件区域描述表控制器接收第一读取请求,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目用完时,所述硬件区域描述表高速缓存模块根据所述第一读取请求生成第二读取请求,并根据所述第二读取请求从所述存储器读取所述至少一个硬件区域描述符条目。
5.如权利要求4所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目的数量为0时,表示存储的硬件区域描述符条目用完。
6.如权利要求4所述的进阶主机控制器,其中,所述硬件区域描述表高速缓存模块把读取到的第一个硬件区域描述符条目直接发送给所述硬件区域描述表控制器,其中,所述至少一个硬件区域描述符条目包含所述第一个硬件区域描述符条目。
7.如权利要求1所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块接收到第一读取请求,并且所述硬件区域描述表高速缓存模块中暂存的硬件区域描述符条目用完时,所述状态机进入填充状态,所述硬件区域描述表高速缓存模块开始从所述存储器读取硬件区域描述符条目。
8.如权利要求7所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块从所述存储器读取完硬件区域描述符条目后,所述状态机进入空闲状态。
9.如权利要求1所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块接收到第一读取请求,并且所述硬件区域描述表高速缓存模块中暂存的硬件区域描述符条目未用完时,所述状态机进入返回数据状态,所述硬件区域描述表高速缓存模块开始给所述硬件区域描述表控制器发送硬件区域描述符条目。
10.如权利要求9所述的进阶主机控制器,其中,当所述硬件区域描述表高速缓存模块给所述硬件区域描述表控制器发送完硬件区域描述符条目后,所述状态机进入空闲状态。
11.一种控制方法,用于进阶主机控制器中,所述方法包含:
硬件区域描述表高速缓存模块从存储器读取至少一个硬件区域描述符条目;
所述硬件区域描述表高速缓存模块存储所述至少一个硬件区域描述符条目;
在状态机的控制下,从所述硬件区域描述表高速缓存模块获取一硬件区域描述符条目,根据所述硬件区域描述符条目传输数据;
其中,所述硬件区域描述符条目是至少一个硬件区域描述符条目之一,其中,所述至少一个硬件区域描述符条目储存于所述硬件区域描述表高速缓存模块中。
12.如权利要求11所述的控制方法,还包含:
接收第一读取请求;以及
当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目未用完时,根据所述第一读取请求,发送所述硬件区域描述符条目。
13.如权利要求12所述的控制方法,其中,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目的数量大于0时,表示存储的硬件区域描述符条目未用完。
14.如权利要求11所述的控制方法,还包含:
接收第一读取请求;以及
当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目用完时:
根据所述第一读取请求生成第二读取请求;以及
根据所述第二读取请求从所述存储器读取所述至少一个硬件区域描述符条目。
15.如权利要求14所述的控制方法,其中,当所述硬件区域描述表高速缓存模块中存储的硬件区域描述符条目的数量为0时,表示存储的硬件区域描述符条目用完。
16.如权利要求14所述的控制方法,还包含:
把读取到的第一个硬件区域描述符条目直接发送给所述硬件区域描述表控制器,其中,所述至少一个硬件区域描述符条目包含所述第一个硬件区域描述符条目。
17.如权利要求11所述的控制方法,还包含:
当接收到第一读取请求,并且所述硬件区域描述表高速缓存模块中暂存的硬件区域描述符条目用完时,所述状态机进入填充状态,所述硬件区域描述表高速缓存模块开始从所述存储器读取硬件区域描述符条目。
18.如权利要求17所述的控制方法,还包含:
当所述硬件区域描述表高速缓存模块从所述存储器读取完硬件区域描述符条目后,所述状态机进入空闲状态。
19.如权利要求11所述的控制方法,还包含:
当接收到第一读取请求,并且所述硬件区域描述表高速缓存模块中暂存的硬件区域描述符条目未用完时,所述状态机进入返回数据状态,所述硬件区域描述表高速缓存模块开始发送硬件区域描述符条目。
20.如权利要求19所述的控制方法,还包含:
当所述硬件区域描述表高速缓存模块发送完硬件区域描述符条目后,所述状态机进入空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180639.4A CN112328510B (zh) | 2020-10-29 | 2020-10-29 | 进阶主机控制器及其控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011180639.4A CN112328510B (zh) | 2020-10-29 | 2020-10-29 | 进阶主机控制器及其控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112328510A CN112328510A (zh) | 2021-02-05 |
CN112328510B true CN112328510B (zh) | 2022-11-29 |
Family
ID=74296391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011180639.4A Active CN112328510B (zh) | 2020-10-29 | 2020-10-29 | 进阶主机控制器及其控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112328510B (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6065046A (en) * | 1997-07-29 | 2000-05-16 | Catharon Productions, Inc. | Computerized system and associated method of optimally controlled storage and transfer of computer programs on a computer network |
US6345330B2 (en) * | 1998-05-01 | 2002-02-05 | Acqis Technology, Inc. | Communication channel and interface devices for bridging computer interface buses |
US20060236063A1 (en) * | 2005-03-30 | 2006-10-19 | Neteffect, Inc. | RDMA enabled I/O adapter performing efficient memory management |
US20070162475A1 (en) * | 2005-12-30 | 2007-07-12 | Intel Corporation | Method and apparatus for hardware-based dynamic escape detection in managed run-time environments |
CN100452007C (zh) * | 2007-06-13 | 2009-01-14 | 威盛电子股份有限公司 | 直接内存存取处理单元的实体区域描述元预取方法 |
CN102096559B (zh) * | 2011-01-26 | 2014-09-24 | 浪潮电子信息产业股份有限公司 | 一种提高sata接口固态硬盘数据传输效率的方法 |
US8825967B2 (en) * | 2011-12-08 | 2014-09-02 | Conversant Intellectual Property Management Inc. | Independent write and read control in serially-connected devices |
US9032244B2 (en) * | 2012-11-16 | 2015-05-12 | Microsoft Technology Licensing, Llc | Memory segment remapping to address fragmentation |
CN105493051B (zh) * | 2013-06-25 | 2019-03-08 | 马维尔国际贸易有限公司 | 自适应高速缓冲存储器控制器 |
-
2020
- 2020-10-29 CN CN202011180639.4A patent/CN112328510B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112328510A (zh) | 2021-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6405271B1 (en) | Data flow control mechanism for a bus supporting two-and three-agent transactions | |
US5919254A (en) | Method and apparatus for switching between source-synchronous and common clock data transfer modes in a multiple processing system | |
US7263572B2 (en) | Bus bridge and data transfer method | |
US5564114A (en) | Method and an arrangement for handshaking on a bus to transfer information between devices in a computer system | |
US20050060479A1 (en) | High speed and flexible control for bridge controllers | |
US7555576B2 (en) | Processing apparatus with burst read write operations | |
CN108268414B (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
JPH0642226B2 (ja) | データ処理システム | |
US8806071B2 (en) | Continuous read burst support at high clock rates | |
US6766386B2 (en) | Method and interface for improved efficiency in performing bus-to-bus read data transfers | |
US20080052424A1 (en) | Data access system, data access apparatus, data access integrated circuit, and data access method | |
CN112328510B (zh) | 进阶主机控制器及其控制方法 | |
CN112162939B (zh) | 进阶主机控制器及其控制方法 | |
CN115328832B (zh) | 一种基于pcie dma的数据调度系统与方法 | |
US20030217218A1 (en) | Interface for devices having different data bus widths and data transfer method using the interface | |
US5881250A (en) | Host adapter system including an integrated PCI buffer controller and XOR function circuit | |
US5991861A (en) | Method of enabling and disabling a data function in an integrated circuit | |
US5867732A (en) | Hardware method for verifying that an area of memory has only zero values | |
US5974530A (en) | Integrated PCI buffer controller and XOR function circuit | |
JP3431025B2 (ja) | データ転送システム | |
US20050144331A1 (en) | On-chip serialized peripheral bus system and operating method thereof | |
CN107807888B (zh) | 一种用于soc架构的数据预取系统及其方法 | |
US8402233B2 (en) | Method and apparatus for high throughput mass storage device interface in a microprocessor for handheld systems | |
US7694004B2 (en) | Bit-granular writes of control registers | |
US7174410B2 (en) | Method, apparatus and computer program product for write data transfer |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |
|
CP03 | Change of name, title or address |