CN102467471A - 存储器存取装置及方法 - Google Patents
存储器存取装置及方法 Download PDFInfo
- Publication number
- CN102467471A CN102467471A CN2010105330724A CN201010533072A CN102467471A CN 102467471 A CN102467471 A CN 102467471A CN 2010105330724 A CN2010105330724 A CN 2010105330724A CN 201010533072 A CN201010533072 A CN 201010533072A CN 102467471 A CN102467471 A CN 102467471A
- Authority
- CN
- China
- Prior art keywords
- header
- payload
- descriptor
- unit
- block
- 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.)
- Pending
Links
Images
Landscapes
- Computer And Data Communications (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种存储器存取装置及方法,该存储器存取装置耦接一存储器单元,该装置包含:一报头存取电路,包含一报头提取单元,用以提取该存储器单元中的一报头描述符;以及一净荷存取电路,包含一净荷提取单元,用以提取该存储器单元中的一净荷描述符;其中,该报头存取电路与该净荷存取电路不是依序地提取该存储器单元,如此该存储器存取装置能使包存放符合“报头/数据分离”规格,并能减轻处理器的负担与加快速度。
Description
技术领域
本发明涉及一种直接存储器存取(DMA,Direct Memory Access)技术。
背景技术
当一接口设备想要存取一系统存储器时,可以通过一DMA装置来管理数据的搬移,以避免过度占据一处理器的工作时间。举例来说,在一通讯系统中,处理器只要准备好一个描述符(descriptor),网络接收器就会利用内建的DMA装置,就收到的具有报头(header)和净荷(payload)数据的包,依序将报头和净荷数据存放到系统内存的区块中。
面对处理器进一步要求这些包的存放需符合“报头/数据分离(HeaderData Split)”规格时,已知的DMA装置仅能先将报头搬移到一区块,再将净荷数据搬移到另一区块,然而上述的过程却会加重处理器负担且导致整个存放速度变慢。
发明内容
因此,本发明的众多目的之一在于提供一种存储器存取装置及方法,能使包存放符合“报头/数据分离”规格,并能减轻处理器的负担与加快速度。
于是,本发明存储器存取装置,耦接一存储器单元,该装置包含:一报头存取电路,包含一报头提取单元,用以提取该存储器单元中的一报头描述符;以及一净荷存取电路,包含一净荷提取单元,用以提取该存储器单元中的一净荷描述符;其中,该报头存取电路与该净荷存取电路不是依序提取该存储器单元。
而本发明存储器存取装置,耦接一存储器单元,该装置包含:一报头存取电路,包括:一报头提取单元,用以提取该存储器单元中的一报头描述符;及一报头搬移单元,用以根据该报头描述符将一包的一报头存放到该存储器单元的一第一区块中;以及一净荷存取电路,包括:一净荷提取单元,用以提取该存储器单元中的一净荷描述符;及一净荷数据搬移单元,用以根据该净荷描述符将该包的一净荷数据存放到该存储器单元的一第二区块中;其中,该报头存取电路存放该报头到该第一区块中与该净荷存取电路存放该净荷数据到该第二区块中,是非依序进行的。
且本发明存储器存取方法,包括以下步骤:自一存储器单元,提取一报头描述符;自该存储器单元,提取一净荷描述符;接收包含一报头和一净荷数据的一包;根据该报头描述符将该报头存放到该存储器单元的一第一区块中;以及根据该净荷描述符将该净荷数据存放到该存储器单元的一第二区块中;其中,将该报头存放到该存储器单元的该第一区块的步骤,与将该净荷数据存放到该存储器单元的该第二区块中的步骤,是非依序进行的。
附图说明
图1是说明本发明存储器存取装置的第一优选实施例的方块图;
图2是说明本发明存储器存取方法的第一优选实施例的流程图;以及
图3是说明在存储器单元中报头与净荷数据的配置情形的示意图。
主要元件符号说明
100 网络接收器 1 接收缓冲装置
2 接口单元 3 存储器存取装置
31 报头存取电路 311 报头提取单元
312 报头搬移单元 313 报头闭合单元
314 报头缓存单元 32 净荷存取电路
321 净荷提取单元 322 净荷数据搬移单元
323 净荷闭合单元 324 净荷缓存单元
8 处理器 81 管理单元
82 记录单元 9 存储器单元
91 区块 51~57 步骤
具体实施方式
有关本发明的前述及其它技术内容、特点与功效,在以下配合参考图式的四个优选实施例的详细说明中,将可清楚地呈现。
在本发明被详细描述之前,要注意的是,在以下的说明内容中,类似的元件以相同的编号来表示。
第一优选实施例
参阅图1,本发明的存储器存取装置3的第一优选实施例适用于一网络接收器100中,且网络接收器100与一处理器8和一存储器单元9相互电连接。优选地,该存储器存取装置3是一直接存储器存取(DMA)装置。
每当网络接收器100收到一个具有一报头和一净荷数据的包时,其内建的DMA装置3会参考记录在存储器单元9中的一个报头描述符(descriptor)来将报头写到存储器单元9,也会参考记录在存储器单元9中的一个净荷描述符来将净荷数据写到存储器单元9。而这两个描述符是由处理器8事先规划并记录的。
进一步来说,网络接收器100包含彼此电连接的一接收缓冲装置1、一接口单元2及该DMA装置3。DMA装置3包括一报头存取电路31及一净荷存取电路32。报头存取电路31具有一报头提取(fetch)单元311、一报头搬移单元312及一报头闭合(close)单元313。净荷存取电路32具有一净荷提取单元321、一净荷数据搬移单元322及一净荷闭合单元323。
并且,与网络接收器100电连接的处理器8具有一管理单元81及一记录单元82,且存储器单元9具有多个区块91。
参阅图2,通过存储器单元9、处理器8与网络接收器100,本发明的存储器存取方法的第一优选实施例包含以下步骤:
步骤51:处理器8通过管理单元81来监控存储器单元9的区块91,以找出可供网络接收器100存放的区块91。
步骤52:管理单元81基于找出的区块91,开始准备为包的报头规划一个报头描述符,并为包的净荷数据规划一个净荷描述符。并且,每规划好一个描述符,记录单元82就会将其记录到存储器单元9的一个区块91内。
其中,每一报头描述符具有一个用以指示一个可供网络接收器100存放的第一区块的地址字段,以及一个第一状态字段。当第一状态字段为1,代表第一区块的拥有权在网络接收器100,故网络接收器100“可存放”;当第一状态字段为0,代表第一区块的拥有权在处理器8,故网络接收器100“拒存放”。
同样地,每一净荷描述符具有一个用以指示一个可供网络接收器100存放的第二区块的地址字段,以及一个第二状态字段。当第二状态字段为1,网络接收器100“可存放”第二区块;当第二状态字段为0,网络接收器100“拒存放”第二区块。
而规划初时,各状态字段预设为“可存放”。
步骤53:DMA装置3利用报头存取电路31的报头提取单元311,为将要收到的包,开始从存储器单元9提取相关的报头描述符。并且,DMA装置3也利用净荷存取电路32的净荷提取单元321,为将要收到的包,开始从存储器单元9提取相关的净荷描述符。
步骤54:当接收缓冲装置1接收一包,各存取电路31、32的符号提取单元311、321会检查是否已提取出目前包所要参考的描述符。若否,则重复步骤51~53,直到提取出这些符号;若是,则直接执行步骤55。
请注意,报头存取电路31还具有一报头缓存单元314,可供报头提取单元311暂时存放所提取出的符号。并且,数据存取电路32还具有一净荷缓存单元324,可供净荷提取单元321暂时存放所提取出的符号。
步骤55:针对目前包,报头存取电路31通过报头搬移单元312,根据报头缓存单元314内的报头描述符的地址字段,通过接口单元2将报头存放到对应的区块91,即第一区块。
并且,净荷存取电路32通过净荷数据搬移单元322,根据净荷缓存单元324内的净荷描述符的地址字段,通过接口单元2将净荷数据存放到对应的区块91,即第二区块。
步骤56:接着,就目前包,报头闭合单元313改变存储器单元9中报头描述符的状态字段,以指示该第一区块从“可存放”变更成“拒存放”。且净荷闭合单元323改变存储器单元9中净荷描述符的状态字段,以指示该第二区块从“可存放”变更成“拒存放”。
然后,报头闭合单元313和净荷闭合单元323会分别发出一个中断(interrupt)信号给管理单元81,使其检验地址字段对应的区块91是否确实放入了数据。
步骤57:DMA装置3检查是否所有报头和净荷描述符的状态字段都被改变。若否,则从报头缓存单元314和净荷缓存单元324中重新读取那些状态字段尚未改变的符号,并跳回步骤55;若是,则结束目前包的存取流程。
而且,只要重复前述流程,就能将下一包也存放到存储器单元9中。
参阅图3,值得注意的是,在存储器单元9闲置空间足够大时,本例的管理单元81会规划描述符,使得:相关的连续包的报头能被集中存放到连续的多个第一区块,且连续包的净荷数据也能被存放到连续的多个第二区块。这样,当DMA装置3完成包搬移,不仅可达到“报头/数据分离”规格的要求;处理器8之后要使用这些报头或净荷数据时,亦可直接将整组区块91的内容搬到一高速缓冲(cache)存储器来使用,有助于提高处理速率,并减小重新写入高速缓冲存储器或是在高速缓冲存储器中找不到数据的可能性;再者,对于同一包,由于报头存取电路31与净荷存取电路32可以不依序操作,因此可以使包的不同部分的数据实质上同时写入存储器单元9中,而加快包的存取。非依序操作是指报头存取电路31与净荷存取电路32两者的符号提取操作(或数据搬移操作、符号闭合操作)并非依序进行,而是两者的操作是实质上同时进行或是有部分操作时间重迭。
再者,管理单元81也会规划使得:连续包的报头描述符能被集中存放在又一组连续区块91,且连续包的净荷描述符也能被存放在另一组连续区块91。进一步地,为了节省存储器空间的考虑,在实际应用中,管理单元81多会重复使用这些存放描述符的区块91,而将其中连续N个包的报头描述符集合构成一报头描述符环链(ring),且将其中连续N个包的净荷描述符集合构成一净荷描述符环链。
举例来说,如果DMA装置3参考净荷描述符环链的第n(1≤n≤N)个描述符来存放第n个包的净荷数据,那么在收到第N+1个包时就可以再次参考第1个描述符,且在收到第N+2个包时就可以再次参考第2个描述符,以此类推。
请注意,由于在存放好包内容后,描述符的状态字段为“拒存放”,且管理单元81会收到该中断信号。而基于重复使用考虑,管理单元81会进一步主动地更新状态字段为“可存放”,并更改相关地址字段来指向另一个适合存放的区块91。
此外,如果处理器8不再使用已存放在该描述符指示区块91的内容后,管理单元81也会更新状态字段为“可存放”,但保持原先的地址字段。这样,DMA装置3就能循环各环链,再次存放包内容到原先的区块91。
第二优选实施例
相比于第一优选实施例,本发明存储器存取装置的第二优选实施例的不同之处在于:网络接收器100收到的包具有H个报头和一净荷数据,H≥1。
如本发明领域具有通常知识者所熟悉,一发讯端会使待传包经过开放系统互连(OSI,Open Systems Interconnection)模型等七协议层处理后,才送出。且每经一层处理,就会加上一个该层特有的报头。因此,每一包的报头数目可能多达七个。
回归参阅图1,本例的管理单元81会为包的H个报头,分别规划一个报头描述符。然后,DMA装置3利用H个报头存取电路31及一个净荷存取电路32来进行包存取。为便于示图,图1取H=1。
详细来说,DMA装置3在处理每一包时,这H个报头存取电路31可先分别通过报头提取单元311,从存储器单元9中提取出相关报头的报头描述符并记录在报头缓存单元314内,接着分别通过报头搬移单元312将对应报头存放到相关报头描述符指示的第一区块,然后再分别通过报头闭合单元313改变存储器单元9中相关报头描述符的第一状态字段。另一方面,DMA装置3也会利用净荷存取电路32,按照第一优选实施例的方法来存放净荷数据,而完成整个包的存取。
第三优选实施例
当包所含净荷数据过长时,DMA装置3也可以分段地处理。例如,在净荷数据被分成P(P≥1)段的情况下,管理单元81会为这P段净荷数据分别规划一个净荷描述符来放到存储器单元9中。
所以,DMA装置3除了会利用一个报头存取电路31按照第一优选实施例的方法来存放报头,同时也会利用P个净荷存取电路32来进行该P段净荷数据的存取。为便于示图,图1取P=1。
这P个净荷存取电路32先分别通过净荷提取单元321,从存储器单元9中提取出与对应段净荷数据相关的净荷描述符并记录在净荷缓存单元324内,接着分别通过净荷数据搬移单元322将对应段净荷数据存放到相关净荷描述符指示的第二区块,然后再分别通过净荷闭合单元323改变存储器单元9中相关净荷描述符的第二状态字段。如此而完成整个包的存取,并减少包搬移的时间。
值得注意的是,优选地,本例管理单元81所规划的P个净荷描述符会指向地址连续的P个第二区块。因此,处理器8之后要使用包的净荷数据时,可以直接从这P个连续的第二区块读出并搬到一高速缓存存储器(图未示)来使用。
第四优选实施例
网络接收器100所接收的包也可以含有H(H≥1)个报头和P(P≥1)段净荷数据,且DMA装置3包括H个报头存取电路31及P个净荷存取电路32。为便于示图,图1取H=1且P=1。
各报头存取电路31按照第二优选实施例的方法来存放对应报头,各净荷存取电路32按照第三优选实施例的方法来存放对应段净荷数据,如此完成整个包的存取。
优选地,DMA装置3的报头搬移单元312的数据搬移能力及DMA装置3的净荷数据搬移单元322的数据搬移能力,亦即两者的频宽与硬件,可以一预定的比例来配置;例如,若在预定的时间内的平均报头搬移量为2M,平均净荷数据搬移量为25.3M,则报头搬移单元312的数据搬移能力与净荷数据搬移单元322的数据搬移能力的比例为2∶25时,两者的数据搬移的动作可以实质上同时完成,而加快整体包搬移的时间。
综上所述,前述实施例的DMA装置3是采用不同的描述符来当作存放报头和净荷数据的参考,故可达到报头/数据分离规格的要求,且可减轻核心处理器8的负担并加快速度,故确实能达到本发明的目的。
惟以上所述者,仅为本发明的优选实施例而已,当不能以此限定本发明实施的范围,即但凡依本发明权利要求书及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。
Claims (13)
1.一种存储器存取装置,耦接一存储器单元,所述装置包含:
一报头存取电路,包含一报头提取单元,用以提取所述存储器单元中的一报头描述符;以及
一净荷存取电路,包含一净荷提取单元,用以提取所述存储器单元中的一净荷描述符;
其中,所述报头存取电路与所述净荷存取电路不是依序地提取所述存储器单元。
2.根据权利要求1的装置,其中,所述报头存取电路还包含一报头搬移单元,所述净荷存取电路还包含一净荷数据搬移单元;
其中当所述存储器存取装置接收到包含一报头及一净荷数据的一包时,会通过所述报头搬移单元,根据所述报头描述符将所述报头存放到所述存储器单元的一第一区块中,并通过所述净荷数据搬移单元,根据所述净荷描述符将所述净荷数据存放到所述存储器单元的一第二区块中。
3.根据权利要求2的装置,其中,所述报头搬移单元将所述报头存放到所述第一区块中,与所述净荷数据搬移单元将所述净荷数据存放到所述第二区块中,是非依序进行的。
4.根据权利要求2的装置,其中,所述报头搬移单元的数据搬移能力与所述净荷数据搬移单元的数据搬移能力,根据一预定的比例来配置。
5.根据权利要求4的装置,其中,所述预定的比例根据一预定时间内的平均报头搬移量与平均净荷数据搬移量的比值来决定。
6.根据权利要求1的装置,其中,所述报头存取电路还包含一报头搬移单元,所述净荷存取电路还包含一净荷数据搬移单元;
其中当所述存储器存取装置接收到多个包含一报头及一净荷数据的连续包时,会通过所述报头搬移单元,根据所述报头描述符,将所述报头存放到所述存储器单元中连续的多个第一区块,且通过所述净荷数据搬移单元,根据所述净荷描述符,将所述净荷数据存放到连续的多个第二区块。
7.根据权利要求3的装置,其中,所述报头描述符还包含一个用以指示所述第一区块为可存放或拒存放的一第一状态字段,所述净荷描述符还包含一个用以指示所述第二区块为可存放或拒存放的一第二状态字段,且其中所述报头存取电路还包括一报头闭合单元,用以改变所述第一状态字段,所述数据存取电路还包括一净荷闭合单元,用以改变所述第二状态字段。
8.一种存储器存取装置,耦接一存储器单元,所述装置包含:
一报头存取电路,包括:一报头提取单元,用以提取所述存储器单元中的一报头描述符;及一报头搬移单元,用以根据所述报头描述符将一包的一报头存放到所述存储器单元的一第一区块中;以及
一净荷存取电路,包括:一净荷提取单元,用以提取所述存储器单元中的一净荷描述符;及一净荷数据搬移单元,用以根据所述净荷描述符将所述包的一净荷数据存放到所述存储器单元的一第二区块中;
其中,所述报头存取电路存放所述报头到所述第一区块中与所述净荷存取电路存放所述净荷数据到所述第二区块中,是非依序进行的。
9.根据权利要求8的装置,其中,所述报头搬移单元的数据搬移能力与所述净荷数据搬移单元的数据搬移能力,根据一预定的比例来配置。
10.根据权利要求9的装置,其中,所述预定的比例根据一预定时间内的平均报头搬移量与平均净荷数据搬移量的比值来决定。
11.根据权利要求8的装置,其中,所述报头描述符还包含一个用以指示所述第一区块为可存放或拒存放的一第一状态字段,所述净荷描述符还包含一个用以指示所述第二区块为可存放或拒存放的一第二状态字段,且其中所述报头存取电路还包括一报头闭合单元,用以改变所述第一状态字段,所述净荷存取电路还包括一净荷闭合单元,用以改变所述第二状态字段。
12.一种存储器存取方法,包含以下步骤:
自一存储器单元,提取一报头描述符;
自所述存储器单元,提取一净荷描述符;
接收包含一报头及一净荷数据的一包;
根据所述报头描述符将所述报头存放到所述存储器单元的一第一区块中;以及
根据所述净荷描述符将所述净荷数据存放到所述存储器单元的一第二区块中;
其中,将所述报头存放到所述存储器单元的所述第一区块的步骤,与将所述净荷数据存放到所述存储器单元的所述第二区块的步骤,是非依序进行的。
13.根据权利要求12的方法,还包含以下步骤:
改变所述报头描述符的一第一状态字段以及所述净荷描述符的一第二状态字段;
其中所述第一状态字段用以指示所述第一区块为可存放或拒存放,所述第二状态字段用以指示所述第二区块为可存放或拒存放。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105330724A CN102467471A (zh) | 2010-11-04 | 2010-11-04 | 存储器存取装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105330724A CN102467471A (zh) | 2010-11-04 | 2010-11-04 | 存储器存取装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102467471A true CN102467471A (zh) | 2012-05-23 |
Family
ID=46071123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105330724A Pending CN102467471A (zh) | 2010-11-04 | 2010-11-04 | 存储器存取装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102467471A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988940A (zh) * | 2015-02-12 | 2016-10-05 | 晨星半导体股份有限公司 | 用来存取存储器的电路及相关的存取方法 |
CN109479031A (zh) * | 2016-05-18 | 2019-03-15 | 马维尔以色列(M.I.S.L.)有限公司 | 用于在网络设备中处理分组的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531283A (zh) * | 2003-02-15 | 2004-09-22 | ���ǵ�����ʽ���� | 具有有效分组管理单元的分组转发系统及其操作方法 |
US20060075142A1 (en) * | 2004-09-29 | 2006-04-06 | Linden Cornett | Storing packet headers |
CN1788261A (zh) * | 2003-05-15 | 2006-06-14 | 皇家飞利浦电子股份有限公司 | 具有用于传送描述符的存储器的usb主机控制器 |
-
2010
- 2010-11-04 CN CN2010105330724A patent/CN102467471A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531283A (zh) * | 2003-02-15 | 2004-09-22 | ���ǵ�����ʽ���� | 具有有效分组管理单元的分组转发系统及其操作方法 |
CN1788261A (zh) * | 2003-05-15 | 2006-06-14 | 皇家飞利浦电子股份有限公司 | 具有用于传送描述符的存储器的usb主机控制器 |
US20060075142A1 (en) * | 2004-09-29 | 2006-04-06 | Linden Cornett | Storing packet headers |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988940A (zh) * | 2015-02-12 | 2016-10-05 | 晨星半导体股份有限公司 | 用来存取存储器的电路及相关的存取方法 |
CN109479031A (zh) * | 2016-05-18 | 2019-03-15 | 马维尔以色列(M.I.S.L.)有限公司 | 用于在网络设备中处理分组的方法和装置 |
CN109479031B (zh) * | 2016-05-18 | 2021-06-25 | 马维尔以色列(M.I.S.L.)有限公司 | 用于在网络设备中处理分组的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104394096B (zh) | 一种基于多核处理器的报文处理方法及多核处理器 | |
CN103827818B (zh) | Fifo加载指令 | |
CN102377682A (zh) | 基于定长单元存储变长分组的队列管理方法及设备 | |
CN103049240B (zh) | Pci-e设备及其接收数据重排序方法 | |
CN105573711B (zh) | 一种数据缓存方法及装置 | |
CN102479207A (zh) | 一种信息搜索的方法、系统及信息搜索设备 | |
CN101604261B (zh) | 超级计算机的任务调度方法 | |
CN106056211A (zh) | 神经元计算单元、神经元计算模块及人工神经网络计算核 | |
CN106330788B (zh) | 报文分片传输方法和装置 | |
CN106528893A (zh) | 数据同步方法及装置 | |
CN103077147A (zh) | 一种基于链表的全功能1553b总线ip核 | |
CN106503008A (zh) | 文件存储方法和装置及文件查询方法和装置 | |
CN107924330A (zh) | 用于集成的线程调度的技术 | |
CN109800181A (zh) | 一种基于磁盘的数据写入方法、数据写入装置及终端设备 | |
CN106254270A (zh) | 一种队列管理方法及装置 | |
CN102467471A (zh) | 存储器存取装置及方法 | |
CN101594201B (zh) | 链式队列管理结构整合错误数据过滤的方法 | |
CN102750245A (zh) | 报文接收方法、报文接收模块、装置及系统 | |
CN104536780A (zh) | 一种电子游戏资源高效加载方法及系统 | |
CN101976229A (zh) | 一种系统中外部设备的数据读取方法、系统及装置 | |
CN102521177A (zh) | 中断处理方法及装置、中央处理器以及处理设备 | |
CN100435514C (zh) | 以太网驱动级底层过滤方法和系统 | |
CN102521042A (zh) | 基于哈佛结构dsp的快速正文切换方法 | |
CN102073539B (zh) | 队列请求处理方法和装置 | |
US9582438B2 (en) | Method and apparatus for identifying cause of interrupt |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120523 |