CN101907986A - 访问多个存储器的数据处理设备和数据处理方法 - Google Patents
访问多个存储器的数据处理设备和数据处理方法 Download PDFInfo
- Publication number
- CN101907986A CN101907986A CN2010102698382A CN201010269838A CN101907986A CN 101907986 A CN101907986 A CN 101907986A CN 2010102698382 A CN2010102698382 A CN 2010102698382A CN 201010269838 A CN201010269838 A CN 201010269838A CN 101907986 A CN101907986 A CN 101907986A
- Authority
- CN
- China
- Prior art keywords
- read
- data
- read request
- request
- fifo
- 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.)
- Granted
Links
Images
Landscapes
- Multi Processors (AREA)
Abstract
本发明提供一种数据处理设备和数据处理方法,其依序接受由读引擎向多个外部存储设备发出的多个读请求,并将由此从多个外部存储设备读取的数据依序分配给读引擎。该设备包括:跟踪存储器,按照接受所述多个读请求的顺序,存储各个读请求的信息,并按先入先出的方式输出各个读请求的信息;指针控制器,计算各个读请求的写指针,每个读请求的写指针用于指示响应于该读请求而从相应外部存储设备读取的数据在数据存储器中的存储地址;数据分配器,读取数据存储器中的数据,并根据跟踪存储器输出的每个读请求的信息将其分配给相应读引擎,其中仅在读取和分配了对应于在先接受的读请求的数据之后,数据分配器才读取和分配对应于在后接受的读请求的数据。
Description
技术领域
本发明涉及一种用于控制对多个存储器的数据读取操作的数据处理设备和数据处理方法,更具体地涉及一种响应于一个或多个读引擎分别向多个存储器发出的多个读请求而从所述多个存储器读取数据,并以正确的顺序将所述数据提供给相应的读引擎的数据处理设备和数据处理方法。
背景技术
在数据存取领域,常常出现这样的场景,即,一个或多个读引擎向多个彼此独立的存储器发送读请求以读取存储在其中的数据,其中,一个读引擎只有一个读端口且一次只能访问一个存储器,在每个读引擎与各个存储器之间各有一条访问路径,并且在各个读引擎与同一个存储器之间只有一条公共的访问路径。响应于该读请求而执行的操作大致分为两个阶段,即寻址阶段和数据阶段。在寻址阶段,将读请求发送到目标存储器,在数据阶段,接收从目标存储器输出的所请求的数据并且将其分配给读引擎。在这两个阶段之间存在一时间段,即目标存储器响应于所述读请求而输出所请求的数据的时间段,该时间段被称为存储器的响应时间(latency)。
为了使读引擎正常工作,在一个或多个读引擎发送了多个读请求的情况下,必须将从存储器输出的数据按照读请求发出的顺序分配给相应的读引擎。然而,由于各个存储器的响应时间无法预估,因此可能会出现数据分配顺序错乱或数据冲突的问题。以一个读引擎的情况为例。假设该读引擎在第一时刻向第一存储器发出第一个读请求,然后在第二时刻向第二存储器发出第二个读请求。如果第二存储器的响应时间短于第一存储器的响应时间,则从第二存储器返回的数据比从第一存储器返回的数据更早到达读引擎,即,数据返回顺序与请求所述数据的顺序不一致,这使得读引擎接收到的数据不是所请求的数据,从而发生错误。此外,如果这两个存储器同时将数据返回给读引擎,则由于该读引擎只有一个读端口,因此在读端口处产生数据冲突。在多个读引擎的情况下,由于在各个读引擎与同一个存储器之间只有一条公共的访问路径,上述数据顺序错乱和数据冲突的问题将变得更加严重。
因此,需要一种响应于一个或多个读引擎分别向多个存储器发出的多个读请求而从所述多个存储器读取数据,并以正确的顺序将所述数据提供给相应的读引擎的数据处理设备和数据处理方法。
发明内容
本发明提供一种数据处理设备和数据处理方法,其能够以正确的顺序将响应于一个或多个读引擎分别向多个存储器发出的多个读请求而从所述多个存储器读取的数据提供给相应的读引擎,从而防止读引擎接收的数据顺序发生错乱,并且避免数据冲突。
根据本发明的一个实施例,提供了一种数据处理设备,用于依序接受由读引擎向多个外部存储设备发出的多个读请求,并且将响应于所述多个读请求而分别从所述多个外部存储设备读取的数据依序分配给读引擎。该数据处理设备包括:跟踪存储器,用于按照接受所述多个读请求的顺序,存储各个读请求的信息,并且按照先入先出的方式输出各个读请求的所述信息;指针控制器,用于计算各个读请求的写指针,每个读请求的写指针用于指示响应于该读请求而从相应的外部存储设备读取的数据在数据存储器中的存储地址,其中,所述写指针是按照接受所述读请求的顺序依次累加的;所述数据存储器用于接收响应于每个读请求而从相应的外部存储设备读取的数据,并且根据该读请求的写指针指示的存储地址存储所接收的数据;数据分配器,用于读取数据存储器中的数据,并且根据跟踪存储器所输出的每个读请求的信息将其分配给相应的读引擎,其中,仅在读取和分配了对应于在先接受的读请求的数据之后,数据分配器才读取和分配对应于在后接受的读请求的数据。
根据本发明的另一实施例,提供了一种数据处理方法,用于依序接受由读引擎向多个外部存储设备发出的多个读请求,并且将响应于所述多个读请求而分别从所述多个外部存储设备读取的数据依序分配给读引擎,该数据处理方法包括以下步骤:按照接受所述多个读请求的顺序,存储各个读请求的信息于跟踪存储器中;计算各个读请求的写指针,每个读请求的写指针用于指示响应于该读请求而从相应的外部存储设备读取的数据在数据存储器中的存储地址,其中,所述写指针是按照接受所述读请求的顺序依次累加的;接收响应于每个读请求而从相应的外部存储设备读取的数据,并且根据该读请求的写指针指示的存储地址在所述数据存储器内存储所接收的数据;跟踪存储器按照先入先出的方式输出各个读请求的所述信息;读取存储在数据存储器中的对应于所述多个请求的数据,并且根据每个读请求的信息将其分配给相应的读引擎,其中,仅在读取和分配了对应于在先接受的读请求的数据之后,才读取和分配对应于在后接受的读请求的数据。
本发明实施例的数据处理设备和数据处理方法按照所述多个读请求被接受的顺序,存储和分配从存储器读取的用于这些读请求的数据,从而防止读引擎接收的数据顺序发生错乱,并且避免了数据冲突。
附图说明
通过结合附图对本发明的实施例进行详细描述,本发明的上述和其它目的、特征、优点将会变得更加清楚,其中:
图1是示出根据本发明的数据读取设备的一般性框图;
图2是示出根据本发明第一实施例的数据读取设备的框图;
图3是示出图2所示的跟踪FIFO的存储格式的图;
图4是示出在图2所示的路径状态控制器中实现的有限状态机的状态转移图;
图5A和图5B是示出根据本发明第一实施例的数据处理方法的流程图;
图6是示出根据本发明第二实施例的数据读取设备的框图;
图7是示出图6所示的跟踪FIFO的存储格式的图;
图8A和图8B是示出根据本发明第二实施例的数据处理方法的流程图;
图9示意性地示出了根据本发明第一实施例的数据处理设备和根据本发明第二实施例的数据处理设备的数据读取时序图;
图10是示出根据本发明第三实施例的数据处理设备的框图。
图11是例示计算和存储读请求的写指针的方法的图;
图12是示出图10所示的第一和第二写指针FIFO的存储格式的图;
图13A至13C是示出根据本发明第三实施例的数据处理方法的流程图。
具体实施方式
下面将参照附图来描述根据本发明实施例的数据处理设备和数据处理方法。在附图中,自始至终使用相同的参考标号来表示相同的部分。应当理解:这里描述的实施例仅仅是说明性的,而不应被解释为限制本发明的范围。
图1是示出根据本发明的数据读取设备的一般性框图。如图1所示,读引擎100-1、100-2和100-3连接到数据处理设备200。数据处理设备200连接到第一存储器300-I和第二存储器300-II。应当注意,在图1以及下文所述的各个实施例中,虽然只示出了两个存储器和三个读引擎,但是应当认识到,这只是示例性的,实际上,存储器和读引擎的数目也可以是其它数目。
在读引擎100-1、100-2和100-3与同一个存储器之间,只存在一条访问路径,其中,从仲裁单元201经由数据处理单元202到第一存储器300-I的路径为路径I,从仲裁单元201经由数据处理单元202到第二存储器300-II的路径为路径II。也就是说,对于每个存储器,这三个读引擎共享同一条访问路径。
读引擎100-1、100-2或100-3可以分别发送读请求REQ_1、REQ_2或REQ_3以访问第一存储器300-I或第二存储器300-II。该读请求至少包括PATH标志、LEN标志和地址ADDR。PATH标志指示该读请求的目标路径(路径I或路径II),从而指示要从中读取数据的目标存储器。在图1所示的两个存储器的情况下,PATH标志为1比特。为了便于描述,假设当PATH=0时,目标存储器为第一存储器300-I,当PATH=1时,目标存储器为第二存储器300-II。LEN标志指示该读请求要读取的数据的长度。作为示例,将LEN标志设为2比特,其中,当LEN=00时,要读取1笔数据,当LEN=01时,要读取2笔数据,当LEN=10时,要读取3笔数据,LEN=11的情况被预留以供将来使用。在本说明书中,数据总线的宽度为128比特,因此将每笔数据设为128比特,但这不是限制性的,也可以将每笔数据设为包括其它数目的比特。地址ADDR指示要读取的数据在目标存储器中的起始存储地址。由于数据被依序存储在目标存储器中,因此根据地址ADDR和LEN标志,可以获得要读取的全部数据在目标存储器中的地址。此外,所述读请求还可以包括TYPE标志,其指示发送该读请求的读引擎,在本说明书中,由于使用了三个读引擎的示例,因此可以将TYPE标志设为2比特,其中,当TYPE为00、01和01时,对应的读引擎分别为读引擎100-1、100-2或100-3。应当了解,上述PATH标志、LEN标志和TYPE标志的长度和含义仅仅是示例性的,它们可以根据读引擎的数目、存储器的数目、以及要读取的数据长度等变化。
数据处理设备200包括仲裁单元201和数据处理单元202。
仲裁单元201根据预定的仲裁算法以及数据处理单元202的状态,对来自读引擎100-1、100-2和100-3的读请求执行仲裁,以确定对哪个读请求给予许可(grant)。在执行仲裁确定了所述读请求之后,仲裁单元201向发送该读请求的读引擎发送ACK信号以通知其读请求已经获得许可,从而完成寻址阶段的握手(handshake),然后将该读请求发送给数据处理单元202以进行后续处理。仲裁单元201使用的仲裁算法可以是固定优先级算法或循环(round robin)算法,或者可以是本领域公知的其它仲裁算法。
数据处理单元202根据读请求中的TYPE标志,将仲裁单元201发送的读请求转发给该读请求的目标存储器,使得该目标存储器(第一存储器300-I或第二存储器300-II)根据读请求中的地址ADDR和LEN标志而将所请求的数据以及指示所述数据已经就绪的RRDY信号返回给数据处理单元202。
然后,数据处理单元202执行适当的控制,使得将响应于各个读请求而从存储器读取的数据按照仲裁单元201发送读请求的顺序发送给相应的读引擎。
下面,将参照具体的实施例来描述根据本发明的数据处理设备和数据处理方法。
(第一实施例)
首先,将参照图2来描述根据本发明第一实施例的数据处理设备。
如图2所示,根据本发明第一实施例的数据处理设备400包括仲裁单元401和数据处理单元402(为清楚起见,以虚线示出)。仲裁单元401相当于图1所示的仲裁单元201,数据处理单元402相当于图1所示的数据处理单元202,数据处理单元402包括用于路径I的第一请求先入先出存储器(FIFO)4021、用于路径II的第二请求FIFO 4022、路径状态控制器4023、跟踪(tracking)FIFO 4024、选择器4025和4026、以及读取数据分配器4027,其中,路径I是从仲裁单元401经由第一请求FIFO 4021到第一存储器300-I的访问路径,路径II是从仲裁单元401经由第二请求FIFO 4022到第二存储器300-II的访问路径。
当读引擎100-1、100-2和100-3分别发出读请求REQ_1、REQ_2和REQ_3时,仲裁单元401首先根据预定仲裁算法执行仲裁以便确定接收哪个读请求于数据处理设备400中进行处理。为了便于描述,在这里假设仲裁单元401决定接收来自读引擎100-1的读请求REQ_1。
然后,仲裁单元401将读请求REQ_1中的PATH标志提供给路径状态控制器4023,使得路径状态控制器4023检查当前工作路径(即,当前正在其上执行读请求的访问路径),并且判断当前工作路径是否与读请求REQ_1的目标路径相同。如果当前工作路径与读请求REQ_1的目标路径相同,则仲裁单元401在当前工作路径上执行与读请求REQ_1相关联的事务,即,根据读请求REQ_1中的PATH标志的值,将读请求REQ_1发送给第一请求FIFO 4021(当PATH=0时)或第二请求FIFO 4022(当PATH=1时)以及跟踪FIFO4024,以进一步确定是否向读请求REQ_1给予许可。反之,如果当前工作路径与读请求REQ_1的目标路径不同,则仲裁单元401保持(hold)读请求REQ_1,并且直到跟踪缓冲器4024变空且路径状态控制器4023将当前工作路径切换为读请求REQ_1的目标路径时,才将该读请求REQ_1发送给第一请求FIFO 4021或第二请求FIFO 4022以及跟踪FIFO 4024。接着,当与读请求REQ_1相对应的请求FIFO和跟踪FIFO 4024均未满时,仲裁单元401向读引擎100-1发送ACK信号以通知读请求REQ_1已经获得许可(被接受),从而完成寻址阶段的握手。反之,当这两个FIFO中的任何一个已满时,握手失败,此时仲裁单元401保持所述读请求,而不发送ACK信号。
其中,第一请求FIFO 4021用于存储访问第一存储器300-I的读请求。即在读请求REQ_1的目标路径为路径I的情况下,当从仲裁单元401接收到该读请求时,第一请求FIFO 4021检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元401。
第二请求FIFO 4022用于暂存访问第二存储器300-II的读请求。即在读请求REQ_1的目标路径为路径II的情况下,当从仲裁单元401接收到该读请求时,第二请求FIFO 4022检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元401。
第一请求FIFO 4021和第二请求FIFO 4022以乒乓方式(ping-pong)工作,使得将存储在这两个FIFO中的读请求依序输出到第一存储器300-I或第二存储器300-II。这两个FIFO的大小可以根据实际需要设定,在本实施例中,作为示例,将它们的大小均设置为2×30比特。
跟踪FIFO 4024用于存储读请求的TYPE标志和LEN标志。该存储是在完成寻址阶段的握手时进行的。与上述第一请求FIFO 4021和第二请求FIFO4022类似,当从仲裁单元401接收到读请求REQ_1时,跟踪FIFO 4024也会检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元401。当跟踪FIFO 4024为空时,其可主动地或者响应于路径状态控制器4023的请求而将跟踪FIFO空标志输出到路径状态控制器4023。之后,当跟踪FIFO 4024从选择器4025接收到来自第一存储器300-I的RRDY_I信号或来自第二存储器300-II的RRDY_II信号时,跟踪FIFO 4024按照先入先出的方式依序输出最前面的读请求(即,当前读请求)的TYPE标志和LEN标志至读取数据分配器4027。
在本实施例中,将跟踪FIFO 4024设置为最多可以存储32个读请求的TYPE标志和LEN标志,由于每个读请求的TYPE标志和LEN标志均为2比特,因此,跟踪FIFO 4024的大小为32×4比特。图3示出了跟踪FIFO 4024的存储格式。如图3所示,用于每个读请求的条目包括2比特的LEN标志(LEN0和LEN1)和2比特的TYPE标志(TYPE0和TYPE1)。当然,跟踪FIFO 4024的大小也可以根据需要而设为其它值。
路径状态控制器4023用于根据从仲裁单元401接收的读请求的目标路径以及跟踪FIFO 4024是否为空来控制当前工作路径在路径I和路径II之间的切换,并且将指示当前工作路径的路径状态信号输出到选择器4025和4026的控制端(sel)。具体地,在数据处理设备400启动的时候,从仲裁单元401接收到第一个读请求时,路径状态控制器4023将该读请求的目标路径设为当前工作路径。之后,每当从仲裁单元401接收到后续的读请求时,路径状态控制器4023都查看当前工作路径,并且检查该读请求的目标路径是否与当前工作路径相同。如果这两个路径相同,则路径状态控制器4023不需切换当前工作路径,从而数据处理单元402在当前工作路径上继续处理后续的读请求。反之,当这两个路径不同时,路径状态控制器4023进一步检查跟踪FIFO 4024是否为空(例如,通过从跟踪FIFO 4024输出的跟踪FIFO空标志来检测),以确定当前工作路径上的所有读请求是否都已经处理完毕。只有在所接收的读请求的目标路径与当前工作路径不同,且跟踪FIFO 4024为空(即,当前工作路径上的所有读请求都已经处理完毕)时,路径状态控制器4023才会将当前工作路径切换为所接收的读请求的目标路径,从而在新的当前工作路径上处理所接收的读请求。
实际上,路径状态控制器4023形成图4所示的有限状态机。如图4所示,该状态机具有两个状态,即,“路径I”和“路径II”,这两个状态分别表示当前工作路径为路径I和当前工作路径为路径II。当该状态机处于“路径I”状态时,只有在所接收的读请求的目标路径为路径II且跟踪FIFO 4024为空时,该状态机才转移到“路径II”状态,即,路径状态控制器4023将当前工作路径切换为路径II,对于其它情况,该状态机的状态不发生转移。另一方面,当该状态机处于“路径II”状态时,只有在所接受的读请求的目标路径为路径I且跟踪FIFO 4024为空时,该状态机才转移到“路径I”状态,对于其他情况,该状态机的状态不发生转移。
当完成寻址阶段的握手时,与读请求REQ_1相对应的请求FIFO存储该读请求中的地址ADDR和LEN标志,跟踪FIFO 4024存储该读请求中的TYPE标志和LEN标志。之后,第一请求FIFO 4021或第二请求FIFO 4022将这些读请求依序发送到第一存储器300-I或第二存储器300-II。
作为对所述读请求的响应,第一存储器300-I或第二存储器300-II向相应的请求FIFO发送ACK信号(ACK_I或ACK_II),然后经过一段响应时间之后,将所请求的数据(数据_I或数据_II)输出到选择器4026,同时将指示所述数据已经就绪的RRDY_I信号或RRDY_II信号输出到选择器4025。如本领域公知的,对于存储器输出的每笔数据,都伴随有一个RRDY_I信号或RRDY_II信号。
选择器4025根据来自路径状态控制器4023的路径状态信号而将RRDY_I信号或RRDY-II信号作为RRDY信号而输出到跟踪FIFO 4024和读取数据分配器4027。例如,当路径状态信号值为0时,选择器4025输出RRDY_I信号作为RRDY信号,而当路径状态信号值为1时,选择器4025输出RRDY_II信号作为RRDY信号。
选择器4026根据所述路径状态信号而将来自第一存储器300-I或第二存储器300-II的数据输出到读取数据分配器4027。具体地,当路径状态信号指示当前工作路径为路径I时,选择器4026输出来自第一存储器300-I的数据,而当路径状态信号指示当前工作路径为路径II时,选择器4026输出来自第二存储器300-II的数据。
读取数据分配器4027不断地检查是否接收到RRDY_I信号或RRDY_II信号,并且在接收到它们中的任何一个时,从跟踪FIFO 4024读取当前读请求的TYPE标志和LEN标志,并且根据这两个标志确定发出该读请求的读引擎以及所请求的数据长度L(笔数)。然后,读取数据分配器4027接收从选择器4026输出的长度L的数据,并且将该数据与从选择器4025输出的相应的RRDY信号一起分配给到所确定的读引擎。
对于跟踪FIFO 4024中记录的每个读请求,读取数据分配器4027都执行上述操作,从而将响应于各个读请求而从存储器读取的数据并分配给相应的读引擎。
在根据第一实施例的数据处理设备中,通过使用请求FIFO和跟踪FIFO,各个读引擎发送的针对同一存储器的读请求被依序接收和处理,并且响应于这些读请求而从该存储器输出的数据被按照相同的顺序返回给相应的读引擎。另一方面,通过路径状态控制器的控制,只有在一条访问路径上的跟踪FIFO内的所有读请求都已经处理完毕时,才能开始执行另一条访问路径上的读请求,使得针对不同存储器的读请求被分时处理。由此,即使各个存储器的响应时间不同,根据各个读请求读取的数据也会以正确的顺序被分配给相应的读引擎。从而避免了数据顺序错乱和数据冲突的问题。
下面,参照图5A和图5B来描述根据本发明第一实施例的数据处理方法。该数据处理方法是由图2所示的数据处理设备400执行的。
图5A是示出根据本发明第一实施例的数据处理方法的寻址阶段的操作的流程图。如图5A所示,在步骤S1001,仲裁单元401判断读引擎100-1、100-2和100-3是否发出了读请求。如果所述读引擎没有发出读请求,则该过程返回步骤S1001。反之,如果所述读引擎发出了读请求,则在步骤S1002,仲裁单元401根据预定仲裁算法执行仲裁,以确定将哪个读请求接收到数据处理设备400中。在这里,假设仲裁单元401决定接收读请求REQ_1。
然后,在步骤S1003,路径状态控制器4023检查当前工作路径,然后在步骤S1004,确定读请求REQ_1的目标路径是否与当前工作路径相同。路径状态控制器4023可以根据仲裁单元401提供的读请求REQ_1中的PATH标志来检查读请求REQ_1的目标路径,从而执行所述确定。
如果在步骤S1004中确定所述目标路径与当前工作路径相同,则读请求REQ_1与在当前工作路径上正在执行的读请求针对的是同一存储器,此时不需要切换工作路径。因此,在步骤S1005,仲裁单元401开始在当前工作路径上执行与所述读请求相关联的事务,即,根据读请求REQ_1中的PATH标志的值,将读请求REQ_1发送给与其对应的请求FIFO(第一请求FIFO 4021或第二请求FIFO 4022)以及跟踪FIFO 4024。
接下来,在步骤S1006,仲裁单元401确定与读请求REQ_1对应的请求FIFO以及跟踪FIFO 4024是否已满,以确定是否向读请求REQ_1给予许可。具体地,如果与读请求REQ_1对应的请求FIFO为第一请求FIFO 4021,则响应于仲裁单元401发送的读请求REQ_1,第一请求FIFO 4021检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元401,反之,如果与读请求REQ_1对应的请求FIFO为第二请求FIFO 4022,则响应于仲裁单元401发送的读请求REQ_1,第二请求FIFO 4022检查自己的存储空间是否已满,并且该检查结果通知给仲裁单元401。此外,跟踪FIFO 4024也响应于该读请求REQ_1而检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元401。然后,仲裁单元401通过查看与读请求REQ_1对应的请求FIFO以及跟踪FIFO 4024的检查结果,来执行步骤S1006中的确定操作。
如果在步骤S1006中确定与读请求REQ_1对应的请求FIFO以及跟踪FIFO 4024中的至少一个已满,则握手失败,该过程返回步骤S1005,以等待该已满的FIFO释放出空间。反之,如果这两个FIFO均未满,则在步骤S1007,仲裁单元401向读引擎100-1发送ACK信号以通知其读请求已经获得许可,从而完成握手。
然后,在步骤S1008中,与读请求REQ_1对应的请求FIFO以及跟踪FIFO4024分别存储与该读请求有关的信息。具体地,与读请求REQ_1对应的请求FIFO存储读请求REQ_1中的地址ADDR和LEN标志,跟踪FIFO 4024存储读请求REQ_1中的TYPE标志和LEN标志。
另一方面,当在步骤S1004确定读请求REQ_1的目标路径与当前工作路径不同时,该过程进行到步骤S1009,在该步骤中,仲裁单元401保持读请求REQ_1,并且检查跟踪FIFO 4024是否为空,以确定当前工作路径上的所有读请求是否都已经处理完毕。如果跟踪FIFO 4024不为空,则该过程返回步骤S1009,以等待跟踪FIFO 4024变空。反之,如果跟踪FIFO 4024为空,则当前工作路径上的所有读请求已经处理完毕,此时,在步骤S1010,路径状态控制器4023将当前工作路径切换为读请求REQ_1的目标路径。然后,该过程进行到步骤S1005,并且按照上述方式执行该步骤以及随后的步骤。
当执行完步骤S1008之后,针对读请求REQ_1的寻址阶段结束。
对于从读引擎100-1、100-2和100-3发送的每个读请求,都执行图5A所示的操作,使得按照接受各个读请求的顺序,将各个读请求被依序存储在相应的请求FIFO和跟踪FIFO 4024中。
存储在第一请求FIFO 4021或第二请求FIFO 4022中的读请求根据PATH标志的值而被依序发送给第一存储器300-I或第二存储器300-II。接收到该读请求的存储器根据该请求中的地址ADDR和LEN标志,将所请求的数据输出到选择器4026,同时将指示所述数据已经就绪的RRDY_I或RRDY_II信号输出到选择器4025。选择器4025和4026根据路径状态控制器4023施加到其控制端的路径状态信号而分别选择性地输出来自第一存储器300-1的RRDY_I信号和数据或者来自第二存储器300-II的RRDY_II信号和数据。如上所述,对于每笔数据,伴随有一个RRDY信号。
在执行了针对每个读请求的寻址阶段的操作之后,经过一段响应时间,开始执行该读请求的数据阶段的操作。图5B示出了本发明第一实施例的数据处理方法的数据阶段的操作的流程图。
如图5B所示,在步骤S1101中,读取数据分配器4027确定是否接收到来自第一存储器300-I的RRDY_I信号或者来自第二存储器300-II的RRDY_II信号。
如果没有接收到来自RRDY_I信号和RRDY_II信号中的任何一个,则该过程返回步骤S1101。反之,如果接收到RRDY_I信号或RRDY_II信号,则在步骤S1102,读取数据分配器4027读取由跟踪FIFO 4024输出的当前读请求的TYPE标志和LEN标志,并且确定发送当前读请求的读引擎以及该读请求要读取的数据长度L。
然后,在步骤S1103,读取数据分配器4027读取从选择器4026输出的一笔数据,并且将该笔数据与指示该笔数据已经就绪的RRDY信号一起发送给所确定的读引擎。
接下来,在步骤S1104,读取数据分配器4027确定是否已经读取了所请求的数据长度(即,长度L)的数据。
如果尚未读取所请求的数据长度的数据,则说明该读请求所请求的数据尚未被读取完毕,因此,该过程进行到步骤S1105,其中,读取数据分配器4027确定是否接收到RRDY_I信号或RRDY_II信号。当接收到RRDY_I信号或RRDY_II信号时,该过程进行到步骤S1103,并且按照上述方式执行后续步骤。反之,如果没有接收到任何一个RRDY信号,则该过程返回步骤S1105。
另一方面,如果在步骤S1104确定已经读取了所请求的数据长度的数据,则说明该读请求所请求的数据都已经被发送给读引擎,因此,针对跟踪FIFO4024中的当前读请求的数据阶段的操作结束。
对于跟踪FIFO 4024中存储的每个读请求,读取数据分配器4027都执行图5B所示的操作,从而完成针对各个读请求的数据读取和分配。
可以看到,在根据本发明第一实施例的数据处理方法中,针对同一存储器的读请求被依序处理,同时,由于路径I和路径II分时工作,针对不同存储器的读请求在时间上被分开处理。由此,避免了数据顺序错乱或者数据冲突的问题。
然而,从另一角度来说,由于这两条路径不能同时工作,因此在当前工作路径上的读请求尚未处理完毕的情况下,目标路径与当前工作路径不同的读请求不会获得许可,这使得读请求的处理效率较低,从而根据本发明第一实施例的数据处理设备和数据处理方法性能较差。为了解决这一问题,提出了根据本发明第二实施例的数据处理设备和数据处理方法。
(第二实施例)
首先,将参照图6来描述根据本发明第二实施例的数据处理设备。
如图6所示,根据本发明第二实施例的数据处理设备600包括仲裁单元601和数据处理单元602(为清楚起见,以虚线示出)。仲裁单元601相当于图1所示的仲裁单元201,数据处理单元602相当于图1所示的数据处理单元202,并且包括用于路径I的第一请求FIFO 6021、用于路径II的第二请求FIFO 6022、跟踪FIFO 6024、选择器6025和6026、读取数据分配器6027、用于第一存储器300-I的第一数据FIFO 6028、用于第二存储器300-II的第二数据FIFO 6029、以及反相器6030。第二实施例中的路径I和路径II与第一实施例相同。
当读引擎100-1、100-2或100-3发出读请求时,仲裁单元601根据预定仲裁算法执行仲裁以便确定将哪个读请求接收到数据处理设备600中以进行后续处理。假设仲裁单元601决定接收来自读引擎100-1的读请求REQ_1。
然后,仲裁单元601根据读请求REQ_1中的PATH标志,将读请求REQ_1发送给与其对应的请求FIFO(第一请求FIFO 6021或第二请求FIFO 6022)。此外,仲裁单元601还将读请求REQ_1发送到跟踪FIFO 6024。
第一请求FIFO 6021和第二请求FIFO 6022分别与图2所示的第一请求FIFO 4021和第二请求FIO 4022相同。当第一请求FIFO 6021或第二请求FIFO6022接收到读请求时,其检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元601。
跟踪FIFO 6024与图2所示的跟踪FIFO 4024略有不同。具体地,除了存储读请求REQ_1的TYPE标志和LEN标志以外,跟踪FIFO 6024还存储该读请求的PATH标志。该存储是在完成寻址阶段的握手时进行的。由于PATH标志为1比特,因此跟踪FIFO 6024的大小为32×5比特,其存储格式如图7所示。此外,跟踪FIFO 6024将指示最前面的读请求(当前读请求)的目标路径的PATH_F信号输出到选择器6025和6026的控制端以及第二数据FIFO6029,该PATH_F信号还经由反相器6030输出到第一数据FIFO 6028。
当接收到仲裁单元601发送的读请求REQ_1时,跟踪FIFO 6024检查自己的存储空间是否已满,并且将该检查结果通知给仲裁单元601。
仲裁单元601根据与读请求REQ_1对应的请求FIFO和跟踪FIFO 6024通知的检查结果,确定是否向读请求REQ_1给予许可。具体地,当与读请求REQ_1对应的请求FIFO和跟踪FIFO 6024均未满时,仲裁单元601向发送该读请求的读引擎100-1发送ACK信号以通知其读请求已经获得许可,从而完成寻址阶段的握手。反之,如果所述请求FIFO和跟踪FIFO 6024中的至少一个已满,则握手失败,此时,仲裁单元601保持所述读请求,而不发送所述ACK信号。
当完成寻址阶段的握手时,与读请求REQ_1对应的请求FIFO存储读请求REQ_1中的地址ADDR和LEN标志,跟踪FIFO 6024存储读请求REQ_1中的TYPE标志、LEN标志和PATH标志。之后,第一请求FIFO 6021或第二请求FIFO 6022将这些读请求依序发送到第一存储器300-I或第二存储器300-II。
作为对所述读请求的响应,第一存储器300-I或第二存储器300-II向相应的请求FIFO发送ACK信号(ACK_I或ACK_II),然后经过一段响应时间之后,输出所请求的数据(数据_I或数据_II)以及相应的读取就绪信号(RRDY_I信号或RRDY_II信号)。
第一数据FIFO 6028响应于RRDY_I信号而存储从存储器300-I读取的数据。第二数据FIFO 6029响应于RRDY_II信号而存储从存储器300-II读取的数据。在本实施例中,这两个数据FIFO的大小均设置为128×128比特。当跟踪FIFO 6024输出的PATH_F信号为0(路径I)时,第一数据FIFO 6028按照先入先出的方式将存储在其中的数据输出到选择器6026的第一输入端,并且将指示第一数据FIFO 6028非空的第一数据FIFO状态信号输出到选择器6025的第一输入端,此时第二数据FIFO 6029不输出数据。反之,当PATH_F信号为1(路径II)时,第二数据FIFO 6029按照先入先出的方式将存储在其中的数据输出到选择器6026的第二输入端,并且将指示第二数据FIFO 6029非空的第二数据FIFO状态信号输出到选择器6025的第二输入端,此时第一数据FIFO 6028不输出数据。
选择器6025根据从跟踪FIFO 6024施加到其控制端的PATH_F信号(例如,0和1),选择性地输出其第一输入端的信号(第一数据FIFO状态信号)(PATH_F=0时)或其第二输入端的信号(第二数据FIFO状态信号)(PATH_F=1时),作为要输出到读引擎的RRDY信号。
选择器6026根据从跟踪FIFO 6024施加到其控制端的所述PATH_F信号的值,选择性地将其第一输入端的数据(来自第一数据FIFO 6028的数据_I)(PATH_F=0时)或且第二输入端的数据(来自第二数据FIFO 6029的数据_II)(PATH_F=1时)输出到读取数据分配器6027。
读取数据分配器6027将从选择器6025输出的RRDY信号和从选择器6026输出的数据输出到对应的读引擎。具体地,读取数据分配器6027不断地检查跟踪FIFO 6024是否为空,以确定是否存在要处理的读请求。如果跟踪FIFO 6024为空,则不存在要处理的读请求,因此读取数据分配器6027不对数据FIFO执行数据读取操作。反之,如果跟踪FIFO 6024非空,则读取数据分配器6027从跟踪FIFO 6024读取PATH_F信号,并且根据PATH_F信号的值来确定应当从哪个数据FIFO读取数据。当PATH_F=0时,应当从第一数据FIFO 6028读取数据,因此,读取数据分配器6027检查第一数据FIFO 6028的存储状态,并且确定第一数据FIFO 6028是否为空,而当PATH_F=1时,应当从第二数据FIFO 6029读取数据,因此,读取数据分配器6027检查第一数据FIFO 6028的存储状态,并且确定第一数据FIFO 6028是否为空。
在PATH_F=0的情况下,如果第一数据FIFO 6028为空,则说明所述读请求所请求的数据尚未从存储器返回,因此,读取数据分配器6027不执行数据读取操作。反之,如果第一数据FIFO 6028非空,则读取数据分配器6027从跟踪FIFO 6024读取当前读请求的TYPE标志和LEN标志以确定发送该读请求的读引擎以及所请求的数据长度L,然后将从选择器6026输出的长度L的数据和从选择器6025输出的对应的RRDY信号发送给所确定的读引擎。在PATH_F=1的情况下,除了将第一数据FIFO 6028替换为第二数据FIFO6029以外,读取数据分配器6027执行与上面所述相同的操作,在这里不再赘述。
对于跟踪FIFO 6024中记录的每个读请求,读取数据分配器6027都执行上述操作,从而将响应于各个读请求而从存储器读取的数据并分配给相应的读引擎。
在根据本发明第二实施例的数据处理设备中,响应于针对不同存储器的读请求而从存储器读取的数据被存储在不同的数据FIFO中,并且各个读请求的信息被依序存储在跟踪FIFO中。由此,在分配数据时,利用从跟踪FIFO依序输出的指示各个读请求的目标路径的PATH_F标志,可以准确地找到存储用于该读请求的数据的数据FIFO并且将其分配给相应的读引擎,从而避免了数据顺序错乱和数据冲突的问题。
下面,参照图8A和图8B来描述根据本发明第二实施例的数据处理方法。该数据处理方法是由图6所示的数据处理设备600执行的。图8A是出根据本发明第二实施例的数据处理方法的寻址阶段的操作的流程图,图8B是示出根据本发明第二实施例的数据处理方法的数据阶段的操作的流程图。
如图8A所示,在步骤S2001,仲裁单元601判断读引擎100-1、100-2和100-3是否发出了读请求。如果所述读引擎没有发出读请求,则该过程返回步骤S2001。反之,如果所述读引擎发出了读请求,则在步骤S2002,仲裁单元601根据预定仲裁算法执行仲裁,以确定将哪个读请求接收到数据处理设备600中。在这里,假设仲裁单元601决定接收来自读引擎100-1的读请求REQ_1。
然后,在步骤S2003,仲裁单元601检查与读请求REQ_1相对应的请求FIFO(第一请求FIFO 6021或第二请求FIFO 6022)以及跟踪FIFO 6024是否已满。
如果与读请求REQ_1相对应的请求FIFO和跟踪FIFO 6024中的至少一个已满,则该过程返回步骤S2003,以等待已满的FIFO释放出空间。反之,如果与读请求REQ_1相对应的请求FIFO和跟踪FIFO 6024均未满,则该过程进行到步骤S2004,其中,仲裁单元601向发送读请求REQ_1的读引擎100-1发送ACK信号以通知其读请求已经获得许可,从而完成寻址阶段的握手。
然后,在步骤S2005,与读请求REQ_1相对应的请求FIFO和跟踪FIFO6024分别存储读请求REQ_1的相关信息。具体地,与读请求REQ_1相对应的请求FIFO存储读请求REQ_1中的地址ADDR和LEN标志,跟踪FIFO 6024存储读请求REQ_1中的TYPE标志、LEN标志和PATH标志。至此,针对读请求REQ_1的寻址阶段结束。
对于来自读引擎100-1、100-2和100-3的每个读请求,都执行图8A所示的操作,使得按照接受各个读请求的顺序,将各个读请求依序存储在对应的请求FIFO和跟踪FIFO 6024中。
存储在第一请求FIFO 6021或第二请求FIFO 6022中的读请求被以乒乓方式发送给第一存储器300-I或第二存储器300-II。根据这些读请求中包括的地址ADDR和LEN标志,第一存储器300-I或第二存储器300-II输出所请求的数据,所述数据被存储在与第一存储器300-I或第二存储器300-II对应的数据FIFO中。
在执行了针对每个读请求的寻址阶段的操作之后,经过一段响应时间,执行数据阶段的操作。
如图8B所示,在步骤S2101中,读取数据分配器6027检查跟踪FIFO 6024是否为空。如果跟踪FIFO 6024为空,则说明当前不存在要处理的读请求,因此,该过程返回步骤S2101。反之,当跟踪FIFO 6024非空时,存在要处理的读请求,因此,在步骤S2102,读取数据分配器6027读取从跟踪FIFO6024输出的指示最前面的读请求(以下称为当前读请求)的目标路径的PATH_F信号,并且在步骤S2103确定PATH_F是否为1,以确定应当从哪个数据FIFO读取用于该当前读请求的数据。
如果PATH_F=0,则这意味响应于当前读请求而读取的数据将被存储在第一存储器300-I中,因此应当对第一数据FIFO 6028进行读取。因而,在步骤S2104,读取数据分配器6027检查第一数据FIFO 6028的状态,并且在步骤S2105中判断第一数据FIFO 6028是否为空。
如果在步骤S2105中发现第一数据FIFO 6028为空,则说明用于该读请求的数据尚未被存储在第一数据FIFO 6028中,因此,该过程返回步骤S2104。反之,如果第一数据FIFO 6028非空,则在步骤S2106,读取数据分配器6027从跟踪FIFO 6024读取当前读请求的TYPE标志和LEN标志,以确定发送该读请求的读引擎以及该读请求要读取的数据长度L。然后,在步骤S2107,读取数据分配器6027将从选择器6026输出的长度L的数据和从选择器6025输出的对应的RRDY信号发送给该读引擎。
另一方面,如果在步骤S2103中确定PATH_F为1,则在步骤S2108,读取数据分配器6027检查第二数据FIFO 6029的状态,并且在步骤S2109中判断第二数据FIFO 6029是否为空。如果第二数据FIFO 6029为空,则该过程返回步骤S2108。反之,如果第二数据FIFO 6029非空,则在步骤S2110,读取数据分配器6027从跟踪FIFO 6024读取当前读请求的TYPE标志和LEN标志,以确定发送该读请求的读引擎以及该读请求要读取的数据长度L,然后在步骤S2111,将从选择器6026输出的长度L的数据和从选择器6025输出的对应的RRDY信号发送给该读引擎。
至此,针对跟踪FIFO 6024中的当前读请求的数据阶段的操作结束。
对于跟踪FIFO 6024中存储的每个读请求,读取数据分配器6027都执行图8B所示的操作,从而完成针对各个读请求的数据读取和分配。
在根据本发明第二实施例的数据处理设备和数据处理方法中,路径I和路径II可以同时工作。也就是说,即使正在一条访问路径正在执行读请求,针对另一条访问路径的读请求也可以接收和处理。由此,当读引擎发出了针对不同存储器的多个读请求时,与第一实施例相比,根据本发明第二实施例的数据处理设备和数据处理方法可以显著加快读请求的处理速度,从而提高处理效率。
图9示意性地示出了根据本发明第一实施例的数据处理设备和根据本发明第二实施例的数据处理设备的数据读取时序图。在图9中,REQ_MEMI和REQ_MEMII(高电平)分别表示针对第一存储器300-I和第二存储器300-II的第一读请求和第二读请求,ACK_MEMI和ACK_MEMII(高电平)分别表示完成寻址阶段的握手时针对这两个读请求向读引擎发送的ACK信号,RRDY_MEMI和RRDY_MEMII(高电平)分别表示第一存储器和第二存储器在输出所请求的数据的同时输出的数据就绪信号。如图9所示,在第一实施例中,直到第一读请求所请求的数据被返回给读引擎,第二读请求才获得许可。相比之下,在第二实施例中,一旦第一读请求被解除断定(de-assert)(例如,发出ACK信号),第二读请求就获得许可。显然,当存在多个读请求时,根据第二实施例的数据处理设备的总响应时间减少,因而效率更高。
可以看到,在根据本发明第二实施例的数据处理设备中,使用了两个数据FIFO。由于跟踪FIFO 6024最多可以存储32个读请求,每个读请求最多可以请求4笔数据,即4×128比特的数据,因此,在32个读请求均针对同一存储器且每个读请求要读取4笔数据的最坏情况下,每个数据FIFO必须能够存储32×4×128比特的数据,才能避免由于数据FIFO容量不够而不能接收从存储器返回的数据。因此,在第二实施例中,考虑到该最坏情况而将每个数据FIFO的大小设置为128×128比特。然而,这样的两个数据FIFO将占用较大的电路面积,从而增大了数据处理设备的尺寸。而且,由于上述最坏情况很少出现,因此,按照该最坏情况设计的数据FIFO的利用效率较低。
为了解决上述问题,提出了根据本发明第三实施例的数据处理设备和数据处理方法。
(第三实施例)
首先,将参照图10来描述根据本发明第三实施例的数据处理设备。
如图10所示,根据本发明第三实施例的数据处理设备800包括仲裁单元801和数据处理单元802(为清楚起见,以虚线示出)。仲裁单元801相当于图1所示的仲裁单元201,数据处理单元802相当于图1所示的数据处理单元202,并且包括用于路径I的第一请求FIFO 8021、用于路径II的第二请求FIFO 8022、跟踪FIFO 8024、包括控制模块80251的数据缓冲器8025、读写指针控制器8026、读取数据分配器8027、第一写指针FIFO 8028和第二写指针FIFO 8029。第三实施例中的路径I和路径II与第一实施例相同。
当读引擎100-1、100-2和100-3发出读请求时,仲裁单元801根据预定仲裁算法执行仲裁以确定哪个读请求接收到数据处理设备800中。在这里,假设仲裁单元801决定接收读引擎100-1发送的读请求REQ_1。
然后,仲裁单元801根据读请求REQ_1中的PATH标志将读请求REQ_1发送给第一请求FIFO 8021或第二请求FIFO 8022,并且还将读请求REQ_1发送给跟踪FIFO 8024以及读写指针控制器8026。
第一请求FIFO 8021和第二请求FIFO 8022分别与图2所示的第一请求FIFO 4021和第二请求FIFO 4022相同。当第一请求FIFO 8021或第二请求FIFO 8022接收到读请求REQ_1时,其检查自己的存储空间是否已满,并且将检查结果通知给仲裁单元801。
跟踪FIFO 8024与图2所示的跟踪FIFO 4024相同,其大小为32×4比特。当接收到仲裁单元801发送的读请求REQ_1时,跟踪FIFO 8024检查自己的存储空间是否已满,并且将检查结果通知给仲裁单元801。
仲裁单元801根据从与读请求REQ_1相对应的请求FIFO(第一请求FIFO 8021或第二请求FIFO 8022)和跟踪FIFO 8024通知的检查结果,确定是否向读请求REQ_1给予许可(即,是否接受读请求REQ_1)。具体地,当与读请求REQ_1相对应的请求FIFO和跟踪FIFO 8024均未满时,仲裁单元801向发送该读请求的读引擎100-1发送ACK信号以通知其读请求已经获得许可,从而完成寻址阶段的握手。反之,如果所述请求FIFO和跟踪FIFO 8024中的至少一个已满,则握手失败,此时,仲裁单元801保持所述读请求,而不发送所述ACK信号。
当完成寻址阶段的握手时,第一请求FIFO 8021或第二请求FIFO 8022存储读请求REQ_1中的地址ADDR和LEN标志,跟踪FIFO 8024存储读请求REQ_1中的TYPE标志和LEN标志。
读写指针控制器8026用于控制对数据缓冲器8025的数据读写。在读写指针控制器8026中预先设置了写指针WP和读指针RP,该写指针WP指示响应于每个读请求而从相应的存储器返回的数据在数据缓冲器8025中的存储地址,该读指针RP指示读请求所请求的数据在数据缓冲器8025中的存储地址。在本实施例中,由于数据缓冲器8025的大小为128×128比特,即,最多可以存储128笔数据,因此,将写指针WP和读指针RP的长度设置为7比特,并且写指针WP和读指针RP的初始值为0。
当完成寻址阶段的握手时,读写指针控制器8026接收读请求REQ_1的PATH标志,然后根据该PATH标志的值来确定该读请求的写指针WP应当被存储在第一写指针FIFO 8028中还是第二写指针FIFO 8029中。如果PATH=0,则读写指针控制器8026确定读请求REQ_1的写指针WP,并且将该写指针WP与读请求REQ_1的LEN标志一起写入第一写指针FIFO 8028。反之,如果PATH=1,则读写指针控制器8026确定读请求REQ_1的写指针WP,并且将该写指针WP与读请求REQ_1的LEN标志一起写入第二写指针FIFO 8029中。稍后将描述第一写指针FIFO 8028和第二写指针FIFO 8029。
读写指针控制器8026确定每个读请求的写指针的方法如下。假设读写指针控制器8026依序接收到M个读请求,每个读请求要读取Lm笔数据(由LEN标志表示),每个读请求的写指针为WPm。对于第一个读请求,读写指针控制器8026将预先设置在其中的写指针WP的当前值(0)确定为该读请求的写指针WP1,然后将该当前值递增L1,使得写指针WP的当前值变为(WP1+L1)。当接收到第二个读请求时,读写指针控制器8026将写指针WP的当前值(WP1+L1)确定为其写指针WP2,然后将该当前值递增L2。依次类推,当接收到第m(m≤M)个读请求时,读写指针控制器8026将写指针WP的当前值(WPm-1+Lm-1)确定为其写指针WPm,然后将该当前值递增Lm。由此,可以依次确定各个读请求的写指针。
下面,通过图11来进一步例示读写指针控制器8026计算和存储读请求的写指针的方法。
最初,写指针WP的当前值为0。
在时刻t1,读引擎发出了针对第一存储器300-I的第一读请求(参见“REQ_MEMI”),其要读取1笔数据(“REQ_LENI=00”)。读写指针控制器8026将在其中预先设置的写指针WP的当前值0确定为第一读请求的写指针WP1,并且将其写入第一写指针FIFO 8028。然后,读写指针控制器8026将写指针WP的当前值0递增1,使得写指针WP的当前值变为1。
在时刻t2,读引擎发出了针对第二存储器的第二读请求(参见“REQ_MEMII”),其要读取2笔数据(“REQ_LENII=01”)。读写指针控制器8026将写指针WP的当前值1确定为第二读请求的写指针,并且将其写入第二写指针FIFO 8029。然后,读写指针控制器8026将写指针WP的当前值1加“2”,使得写指针WP的当前值变为3。
在时刻t3,读引擎发出了针对第一存储器的第三读请求(参见“REQ_MEMI”),其要读取4笔数据(“REQ_LENI=11”)。读写指针控制器8026将写指针WP的当前值3确定为第三读请求的写指针,并且将其写入第一写指针FIFO 8028。然后,读写指针控制器8026将写指针WP的当前值3加“4”,使得写指针WP的当前值变为7。
在时刻t4,读引擎发出了针对第二存储器的第四读请求(参见“REQ_MEMII”),其要读取4笔数据(“REQ_LENII=11”)。读写指针控制器8026将写指针WP的当前值7确定为第四读请求的写指针,并且将其写入第二写指针FIFO 8029。然后,读写指针控制器8026将写指针WP的当前值7加“4”,使得写指针WP的当前值变为11。
由此,确定了第一到第四读请求的写指针,并且将这些写指针分别写入两个写指针FIFO。
对于仲裁单元801接受的各个读请求,读写指针控制器8026都按照上述方式依序确定其读指针。可以看到,各个读请求的写指针是按照仲裁单元801接受所述读请求的顺序而依次累加的,而与各个读请求所针对的存储器无关。
第一写指针FIFO 8028与第一存储器300-I相对应,其存储针对第一存储器300-I的读请求的写指针以及该读请求的LEN标志。此外,响应于从第一存储器300-I接收到的每个RRDY_I信号,第一写指针FIFO 8028输出指示最前面的读请求(即,当前读请求)要读取的数据中对应的每笔数据的写地址WP_I_F。该写地址WP_I_F是基于该读请求的写指针WP计算的,其中,对于第m笔数据,其写地址WP_I_F为该读请求的写指针WP的值与(m-1)之和。
第二写指针FIFO 8029与第二存储器300-II相对应,其存储针对第二存储器300-II的读请求的写指针以及该读请求的LEN标志。此外,响应于从第二存储器300-II接收到的每个RRDY_II信号,第二写指针FIFO 8029输出指示最前面的读请求(即,当前读请求)要读取的数据中对应的每笔数据的写地址WP_II_F。该写地址WP_II_F是基于该读请求的写指针WP计算的,其中,对于第m笔数据,其写地址WP_II_F为该读请求的写指针WP的值与(m-1)之和。
在本实施例中,由于跟踪FIFO 8027可以存储32个读请求的相关信息,而写指针为7比特,LEN标志为2比特,因此,第一写指针FIFO 8028和第二写指针FIFO 8029的大小均被设置为32×比特,其存储格式在图12中示出。
在与读请求相对应请求FIFO和跟踪FIFO 8024未满的情况下,仲裁单元801和数据处理单元802对从读引擎接收的每个读请求都执行上述操作,使得按照接受各个读请求的顺序,将这些读请求分别存储在第一请求FIFO8021或第二请求FIFO 8022中,将这些读请求的相关信息存储在跟踪FIFO6024中,并且将每个读请求的写指针根据该读请求的PATH标志而存储在第一写指针FIFO 8028或第二写指针FIFO 8029中。存储在请求FIFO中的读请求被依序输出到相应存储器。
第一存储器300-I在接收到读请求时,根据该读请求中的地址ADDR和LEN标志,将所请求的数据(数据_I)以及相应的RRDY_I信号输出到数据缓冲器8025。另一方面,第二存储器300-II在接收到读请求时,根据该读请求中的地址ADDR和LEN标志,将所请求的数据(数据_II)以及相应的RRDY_II信号输出到数据缓冲器8025。对于数据_I或数据_II中的每笔数据,都伴随有一个RRDY_I或RRDY_II信号。
数据缓冲器8025是具有两个写数据端口和一个读数据端口的缓冲器。从第一存储器300-I和第二存储器300-II输出的数据分别经由这两个写数据端口而被输入到数据缓冲器8025中,读取数据分配器8027经由所述读数据端口而读取存储在数据缓冲器8025中的数据。数据缓冲器8025的大小为128×128比特。此外,在数据缓冲器8025中,对于每笔数据的存储地址设置一个VALID标志,用于表示在所述存储地址上是否存储了有效的数据(即响应于读请求而从存储器读取的数据)。当在数据缓冲器8025中存储一笔数据时,将对应的VALID标志设为1。反之,如果在数据缓冲器8025中的某些存储地址上没有存储数据,或者存储在这些存储地址上的数据已经被读取,则对应的VALID标志被设置为0。
数据缓冲器8025中的控制模块80251不断地检查是否从第一存储器300-I或第二存储器300-II接收到数据就绪信号(RRDY_I或RRDY_II信号),以确定是否从存储器接收到数据。当从第一存储器300-I接收到RRDY_I信号时,控制模块80251读取从第一写指针FIFO 8028输出的当前读请求的写地址WP_I_F,将从第一存储器300-I接收到的数据存储在数据缓冲器8025中的写地址WP_I_F上,并且将与各笔数据的存储地址对应的VALID标志设置为1。另一方面,当从第二存储器300-II接收到RRDY_II信号时,控制模块80251读取从第二写指针FIFO 8029输出的当前读请求的写地址WP_II_F,将从第一存储器300-II接收到的数据存储在数据缓冲器8025中的写地址WP_II_F上,并且将与各笔数据的存储地址对应的VALID标志设置为1。由此,按照仲裁单元801接受各个读请求的顺序,将响应于各个读请求而从存储器读取的数据存储在数据缓冲器8025中。
除了对数据缓冲器8025的写入进行上述控制以外,读写指针控制器8026还控制对数据缓冲器8025的数据读取。
具体地,在接收到来自第一存储器300-I的RRDY_I信号的情况下,读写指针控制器8026接收从第一写指针FIFO 8028输出的写地址WP_I_F,作为读取用于当前读请求的数据的读指针RP,并且将该读指针RP提供给控制模块80251。然后,控制模块80251检查在数据缓冲器8025中与该读指针RP指示的地址相对应的VALID标志,以确定该地址上是否存储了有效数据。如果VALID标志为0,则说明该读请求所请求的数据尚未被存储在数据缓冲器8025中,因此控制模块80251不输出读指针RP指示的地址上的数据。反之,如果VALID标志为1,则控制模块80251输出该读指针RP指示的地址上的数据,并且将对应的VALID标志改变为0。
读取数据分配器8027从跟踪FIFO 8024读取当前读请求的TYPE标志,以确定发送该读请求的读引擎,然后,读取从数据缓冲器8025输出的数据,并且将该数据与对应的RRDY信号一起发送给该读引擎。
在根据本发明第三实施例的数据处理设备中,按照仲裁单元801接受各个读请求(即,各个读请求获得许可)的顺序,通过累加而确定这些读请求的写指针,使得响应于各个读请求而从存储器读取的数据也按照接受各个读请求的顺序而被存储在数据FIFO中。然后,利用VALID标志,仅在用于被先接受的读请求的数据被读取并分配给读引擎之后,才读取和分配用于被后接受的读请求的数据,从而确保将用于各个读请求的数据依序分配给对应的读引擎,避免了数据顺序错乱和数据冲突的问题。而且,在根据本发明第三实施例的数据处理设备中,只使用了一个128×128比特的数据FIFO,相对于根据第二实施例的数据处理设备,减小了设备的尺寸。
下面,将参照图13A到图13C来描述根据本发明第三实施例的数据处理方法。
图13A示出根据本发明第三实施例的数据处理方法的寻址阶段的操作的流程图。
如图13A所示,在步骤S3001,仲裁单元801判断读引擎100-1、100-2和100-3是否发出了读请求。如果所述读引擎没有发出读请求,则该过程返回步骤S3001。反之,如果所述读引擎发出了读请求,则在步骤S3002,仲裁单元801根据预定仲裁算法执行仲裁,以确定将哪个读请求接收到数据处理设备800中。假设仲裁单元801决定接收来自读引擎100-1的读请求REQ_1,其要读取长度L(笔数)的数据。
然后,在步骤S3003,仲裁单元801检查与读请求REQ_1相对应的请求FIFO以及跟踪FIFO 8024是否已满。执行该检查的方式与在上文中针对第二实施例描述的方式相同,因此在这里省略其描述。
如果与读请求REQ_1相对应的请求FIFO和跟踪FIFO 8024中的至少一个已满,则该过程返回步骤S3003,以等待已满的FIFO变空。反之,如果所述请求FIFO和跟踪FIFO 8024均未满,则该过程进行到步骤S3004,在该步骤中,仲裁单元801向发送读请求REQ_1的读引擎100-1发送ACK信号以通知其读请求已经获得许可,从而完成握手。
然后,在步骤S3005,与读请求REQ_1相对应的请求FIFO和跟踪FIFO8024分别存储读请求REQ_1的相关信息。具体地,与读请求REQ_1相对应的请求FIFO存储读请求REQ_1中的地址ADDR和LEN标志,跟踪FIFO 8024存储读请求REQ_1中的TYPE标志和LEN标志。
接下来,在步骤S3006,读写指针控制器8026确定读请求REQ_1的PATH标志是否为1,以确定存储该读请求的写指针的写指针FIFO。
如果在步骤S3006确定PATH标志为0,则在步骤S3007,读写指针控制器8026确定读请求REQ_1的写指针,并且将该写指针与读请求REQ_1中的LEN标志一起写入第一写指针FIFO 8028。反之,如果PATH标志为1,则在步骤S3008,读写指针控制器8026确定读请求REQ_1的写指针,并且将该写指针与读请求REQ_1中的LEN标志一起写入第二写指针FIFO 8029。如上所述,读写指针控制器8026将在其中预先设置的写指针WP的当前值确定为读请求REQ_1的写指针。
接下来,在步骤S3009,读写指针控制器8026将在其中预先设置的写指针WP的当前值递增L,以便在确定下一个读请求的写指针时使用。然后,该寻址阶段的操作结束。
对于来自读引擎100-1、100-2和100-3的每个读请求,都执行上述流程,使得按照接受各个读请求的顺序,将各个请求依序存储在对应的请求FIFO以及跟踪FIFO 8024中。
存储在第一请求FIFO 8021或第二请求FIFO 8022中的读请求被以乒乓方式发送给第一存储器300-I或第二存储器300-II。根据这些读请求中包括的地址ADDR和LEN标志,所请求的数据被从第一存储器300-I或第二存储器300-II读出并输出到数据FIFO 8025。
然后,执行根据本发明第三实施例的数据处理方法的数据阶段的操作。
图13B示出了该数据处理方法的数据阶段中的数据写入过程的流程图。
如图13B所示,在步骤S3101,数据缓冲器8025中的控制模块80251检查是否接收到RRDY_I信号或RRDY_II信号。
如果接收到RRDY_I信号,则在步骤S3102,控制模块80251读取从第一写指针FIFO 8028输出的当前读请求的写地址WP_I_F。如上文所述,写地址WP_I_F是在第一写指针FIFO 8028中基于当前读请求的写指针确定的。然后,在步骤S3103,控制模块80251将从第一存储器300-I输出的一笔数据存储在数据缓冲器8025内的所述写地址WP_I_F上。接下来,该过程返回步骤S3101,以便接收和存储下一笔数据。
反之,如果接收到RRDY_II信号,则在步骤S3104,控制模块80251读取从第二写指针FIFO 8029输出的当前读请求的写地址WP_II_F。写地址WP_II_F是在第二写指针FIFO 8029中基于当前读请求的写指针确定的。然后,在步骤S3105,控制模块80251将从第二存储器300-II输出的一笔数据存储在数据缓冲器8025内的所述写地址WP_I_F上,并且将对应的VALID标志设置为1。接下来,该过程返回步骤S3101,以便接收和存储下一笔数据。
另一方面,如果在步骤S3101发现没有接收到RRDY_I信号和RRDY_II信号中的任何一个,则这说明第一和第二存储器均未输出数据,因此,该过程结束。
控制模块80251不断地执行图13B所示的流程,从而将存储器输出的数据存储在数据FIFO 8025中。
随后,执行根据本发明第三实施例的数据处理方法的数据阶段中的数据读取过程。图13C示出了该数据读取过程的操作的流程图。
如图13C所示,在步骤S3201,读写指针控制器8026确定是否接收到来自第一存储器300-I的RRDY_I信号或者来自第二存储器300-II的RRDY_II信号,以确定是否在数据FIFO 8025中是否有数据可读。
如果没有接收到RRDY_I信号和RRDY_II中的任何一个,则该过程返回步骤S3201。反之,如果接收到RRDY_I信号和RRDY_II中的任何一个,则在步骤S3202,读写指针控制器8026确定当前读请求的读指针RP。如上所述,读写指针控制器8026接收从第一写指针FIFO 8028输出的写地址WP_I_F,作为当前读请求的读指针RP。该读指针RP被发送给控制模块80251。
然后,在步骤S3203,控制模块80251检查在数据缓冲器8025中与该读指针RP指示的地址上是否存储了有效数据(即响应于当前读请求而从存储器读取的数据)。如上所述,可以通过查看与所述地址对应的VALID标志来执行该检查。如果在所述地址上没有存储有效数据,则该过程返回步骤S3203。反之,如果存储了有效数据,则在步骤S3204,读取数据分配器8027从跟踪FIFO 8024读取当前读请求的TYPE标志,以确定发送该读请求的读引擎,然后在步骤S3205将该读指针RP所指示的地址上的数据发送给所确定的读引擎,并且将对应的VALID标志设置为0。
接下来,在步骤S3206,读写指针控制器8029确定是否已经读取了由LEN标志指示的长度L的数据。如果没有,则表示尚未读取当前读请求所请求的全部数据。因此,在步骤S3207,读写指针控制器8026将当前读指针递增1。然后,该过程返回步骤S3203,并且依序执行后续步骤。反之,如果在步骤S3206确定已经读取了长度L的数据,则该数据读取过程结束。
可以看到,通过使用读写指针控制器和VALID标志,即使只使用了一个数据FIFO,根据本发明第三实施例的数据处理设备和数据处理方法也仍然能够以正确的顺序将响应于各个读请求而从多个存储器读取的数据提供给相应的读引擎。
应当注意,上文描述的根据各个实施例的数据处理设备和数据处理方法只是说明性的,而不是限制性的。例如,尽管在上文中以一笔数据为128比特进行了描述,但是也可以将1笔数据的比特数设为其它数目,例如1比特或64比特等。此外,尽管在上文中将数据处理设备划分为仲裁单元和数据处理单元,并且将数据处理单元进一步划分为各个子部件,但是,也可以以其它方式来划分或数据处理设备,只要划分后的各个部件能够共同完成上文所述的数据处理设备的操作或功能即可。
尽管已经示出和描述了本发明的若干示例实施例,本领域技术人员应当理解,在不背离权利要求及其等价物中限定的本发明的范围和精神的情况下,可以对这些示例实施例做出各种形式和细节上的变化。
Claims (14)
1.一种数据处理设备,用于依序接受由读引擎向多个外部存储设备发出的多个读请求,并且将响应于所述多个读请求而分别从所述多个外部存储设备读取的数据依序分配给读引擎,该数据处理设备包括:
跟踪存储器,用于按照接受所述多个读请求的顺序,存储各个读请求的信息,并且按照先入先出的方式输出各个读请求的所述信息;
指针控制器,用于计算各个读请求的写指针,每个读请求的写指针用于指示响应于该读请求而从相应的外部存储设备读取的数据在数据存储器中的存储地址,其中,所述写指针是按照接受所述读请求的顺序依次累加的;
所述数据存储器用于接收响应于每个读请求而从相应的外部存储设备读取的数据,并且根据该读请求的写指针指示的存储地址存储所接收的数据;
数据分配器,其读取数据存储器中的数据,并且根据跟踪存储器所输出的每个读请求的信息将其分配给相应的读引擎,其中,仅在读取和分配了对应于在先接受的读请求的数据之后,数据分配器才读取和分配对应于在后接受的读请求的数据。
2.如权利要求1所述的数据处理设备,还包括:
分别与所述多个外部存储设备相对应的多个请求存储器,分别用于存储针对相应的外部存储设备的读请求,并以乒乓方式将存储在各个请求存储器中的读请求输出到相应的外部存储设备。
3.如权利要求1所述的数据处理设备,其中:
所述读请求的信息包括指示发送该读请求的读引擎的信息和指示该读请求要读取的数据长度的信息。
4.如权利要求1所述的数据处理设备,还包括:
仲裁单元,用于从读引擎接收所述多个读请求,并且根据预定仲裁算法以及数据存储器和跟踪存储器的状态来确定接受所述多个读请求的顺序。
5.如权利要求1所述的数据处理设备,还包括:
分别与所述多个外部存储设备相对应的多个写指针存储器,分别用于存储针对相应的外部存储设备的读请求的写指针。
6.如权利要求1所述的数据处理设备,其中,在读取存储在数据存储器中的数据之前,所述指针控制器确定该读请求的读指针,并且数据分配器根据所述读指针来从数据存储器中读取对应于该读请求的数据。
7.如权利要求6所述的数据处理设备,其中,仅在读请求的读指针指示的存储地址上存储了有效数据时,数据分配器才读取和分配对应于该读请求的数据。
8.一种数据处理方法,用于依序接受由读引擎向多个外部存储设备发出的多个读请求,并且将响应于所述多个读请求而分别从所述多个外部存储设备读取的数据依序分配给读引擎,该数据处理方法包括以下步骤:
按照接受所述多个读请求的顺序,存储各个读请求的信息于跟踪存储器中;
计算各个读请求的写指针,每个读请求的写指针用于指示响应于该读请求而从相应的外部存储设备读取的数据在数据存储器中的存储地址,其中,所述写指针是按照接受所述读请求的顺序依次累加的;
接收响应于每个读请求而从相应的外部存储设备读取的数据,并且根据该读请求的写指针指示的存储地址在所述数据存储器内存储所接收的数据;
跟踪存储器按照先入先出的方式输出各个读请求的所述信息;
读取存储在数据存储器中的对应于所述多个请求的数据,并且根据每个读请求的信息将其分配给相应的读引擎,其中,仅在读取和分配了对应于在先接受的读请求的数据之后,才读取和分配对应于在后接受的读请求的数据。
9.如权利要求8所述的数据处理方法,还包括以下步骤:
使用与所述多个外部存储设备相对应的多个请求存储器存储针对相应的外部存储设备的读请求,并且以乒乓方式将存储在各个请求存储器中的读请求输出到相应的外部存储设备。
10.如权利要求8所述的数据处理方法,其中:
所述读请求的信息包括指示发送该读请求的读引擎的信息和指示该读请求要读取的数据长度的信息。
11.如权利要求8所述的数据处理方法,还包括以下步骤:
从读引擎接收所述多个读请求,并且根据预定仲裁算法以及数据存储器和跟踪存储器的状态来确定接受所述多个读请求的顺序。
12.如权利要求8所述的数据处理方法,还包括:
分别存储针对相应的外部存储设备的读请求的写指针。
13.如权利要求8所述的数据处理方法,在读取存储在数据存储器中的数据之前,确定该读请求的读指针,并根据所述读指针来从数据存储器中读取对应于该读请求的数据。
14.如权利要求13所述的数据处理方法,其中,仅在每个读请求的读指针指示的存储地址上存储了有效数据时,才读取和分配用于该读请求的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010269838 CN101907986B (zh) | 2010-08-30 | 2010-08-30 | 访问多个存储器的数据处理设备和数据处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010269838 CN101907986B (zh) | 2010-08-30 | 2010-08-30 | 访问多个存储器的数据处理设备和数据处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101907986A true CN101907986A (zh) | 2010-12-08 |
CN101907986B CN101907986B (zh) | 2013-11-06 |
Family
ID=43263455
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010269838 Active CN101907986B (zh) | 2010-08-30 | 2010-08-30 | 访问多个存储器的数据处理设备和数据处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101907986B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016045288A1 (zh) * | 2014-09-24 | 2016-03-31 | 深圳市中兴微电子技术有限公司 | 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法 |
CN109284214A (zh) * | 2018-08-15 | 2019-01-29 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN112199309A (zh) * | 2020-10-10 | 2021-01-08 | 北京泽石科技有限公司 | 基于dma引擎的数据读取方法、装置和数据传输系统 |
CN116521097A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116521095A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 响应输出系统、方法、电子设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127028A (zh) * | 2006-08-17 | 2008-02-20 | 富士通株式会社 | 多处理器系统 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN101719104A (zh) * | 2009-11-24 | 2010-06-02 | 中兴通讯股份有限公司 | 一种同步动态存储器的控制系统及控制方法 |
-
2010
- 2010-08-30 CN CN 201010269838 patent/CN101907986B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101127028A (zh) * | 2006-08-17 | 2008-02-20 | 富士通株式会社 | 多处理器系统 |
CN101354641A (zh) * | 2008-08-20 | 2009-01-28 | 炬力集成电路设计有限公司 | 一种外部存储器的访问控制方法及访问控制装置 |
CN101719104A (zh) * | 2009-11-24 | 2010-06-02 | 中兴通讯股份有限公司 | 一种同步动态存储器的控制系统及控制方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016045288A1 (zh) * | 2014-09-24 | 2016-03-31 | 深圳市中兴微电子技术有限公司 | 一种异步fifo控制器及防止异步fifo缓存数据溢出的方法 |
CN109284214A (zh) * | 2018-08-15 | 2019-01-29 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN109284214B (zh) * | 2018-08-15 | 2021-04-06 | 英业达科技有限公司 | 信息共享电路及共享内存状态的方法 |
CN112199309A (zh) * | 2020-10-10 | 2021-01-08 | 北京泽石科技有限公司 | 基于dma引擎的数据读取方法、装置和数据传输系统 |
CN112199309B (zh) * | 2020-10-10 | 2022-03-15 | 北京泽石科技有限公司 | 基于dma引擎的数据读取方法、装置和数据传输系统 |
CN116521097A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
CN116521095A (zh) * | 2023-07-03 | 2023-08-01 | 摩尔线程智能科技(北京)有限责任公司 | 响应输出系统、方法、电子设备、存储介质及程序产品 |
CN116521095B (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 响应输出系统、方法、电子设备、存储介质及程序产品 |
CN116521097B (zh) * | 2023-07-03 | 2023-09-08 | 摩尔线程智能科技(北京)有限责任公司 | 存储器访问电路及存储器访问方法、集成电路和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN101907986B (zh) | 2013-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100472494C (zh) | 支持多总线多类型存储器的内存仲裁实现系统和方法 | |
CN101907986B (zh) | 访问多个存储器的数据处理设备和数据处理方法 | |
US4384323A (en) | Store group bus allocation system | |
CN1327370C (zh) | 资源管理装置 | |
US5987574A (en) | Bank arbitration for SDRAM memory control | |
US6457114B1 (en) | Asynchronous memory interface for a video processor with a 2N sized buffer and N+1 wide bit gray coded counters | |
US3761879A (en) | Bus transport system for selection information and data | |
JP5365336B2 (ja) | メモリ制御装置およびメモリ制御方法 | |
CN100505676C (zh) | 智能多缓冲区管理的集中调度控制器和动态调度方法 | |
CN106502806B (zh) | 一种总线协议命令处理装置及相关方法 | |
US20020118203A1 (en) | Image processing apparatus and image processing system using the apparatus | |
CN111679786A (zh) | 存储设备、操作存储设备的方法及存储系统 | |
CN101777031A (zh) | 直接存储器存取控制器以及数据传输方法 | |
CA1262493A (en) | Multi processor system | |
CN106951488A (zh) | 一种日志记录方法和装置 | |
KR19980086729A (ko) | 복수어드레스 유지기억장치 | |
CN1996276A (zh) | 多处理器系统中的数据传输 | |
US9086959B2 (en) | Apparatus to access multi-bank memory | |
CN1221919A (zh) | 在处理器单元之间交换数据的系统 | |
KR100676981B1 (ko) | 데이터 처리 장치 및 방법과 컴퓨터 판독가능한 기록 매체 | |
KR101459200B1 (ko) | 전송 제어장치, 메모리 제어장치, 및 상기 전송 제어장치를 구비한 plc | |
EP1513071B1 (en) | Memory bandwidth control device | |
US4514728A (en) | Store group bus allocation system | |
EP2006773A9 (en) | Integrated circuit, and integrated circuit system | |
US9798492B2 (en) | Semiconductor device including a plurality of function blocks |
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 |