CN101111828B - 用于具有组合行和字访问的存储器的系统和方法 - Google Patents

用于具有组合行和字访问的存储器的系统和方法 Download PDF

Info

Publication number
CN101111828B
CN101111828B CN2006800039185A CN200680003918A CN101111828B CN 101111828 B CN101111828 B CN 101111828B CN 2006800039185 A CN2006800039185 A CN 2006800039185A CN 200680003918 A CN200680003918 A CN 200680003918A CN 101111828 B CN101111828 B CN 101111828B
Authority
CN
China
Prior art keywords
dma
read
requests
write
visit
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
CN2006800039185A
Other languages
English (en)
Other versions
CN101111828A (zh
Inventor
董祥厚
B·K·弗拉奇斯
H·P·霍夫斯蒂
高桥修
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN101111828A publication Critical patent/CN101111828A/zh
Application granted granted Critical
Publication of CN101111828B publication Critical patent/CN101111828B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1626Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by reordering requests
    • 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/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1663Access to shared memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

一种用于带有具有组合行和字访问的存储器的处理器的系统和方法被呈现。一种系统使用到直接数据的多路复用器和锁存器来实施对同一存储体的窄读/写存储器访问和宽读/写存储器访问。所述系统使用窄读/写存储器访问处理16字节的加载/存储请求,并且还使用宽读/写存储器访问处理128字节的DMA和取指令请求。在DMA请求期间,所述系统在一个指令周期中向存储器写/读十六个DMA操作。通过这么做,所述存储器可用于在其它十五个指令周期期间处理加载/存储或取指令请求。

Description

用于具有组合行和字访问的存储器的系统和方法
技术领域
本发明一般涉及一种用于具有组合行和字访问的存储器的系统和方法。更特别地,本发明涉及一种用于处理器实施到同一存储器空间的窄存储器访问和宽存储器访问的系统和方法。
背景技术
电路设计者通常面对在设备性能和设备成本之间进行决定。大部分设备的成本对应于其设计需要的硅面积的大小。由于大部分设备的硅面积被用于存储器,所以电路设计者特别注意在电路设计中使用什么存储器单元类型,以便该存储器满足性能需求,但不会过大以至于不必要地增加设备成本。现有技术典型使用单一端口存储器单元类型或双端口存储器单元类型。所述单一端口存储器单元类型是所述两者中较小的,并且因此最小化了设备成本。然而,所述单一端口存储器阻塞重载操作期间的加载-存储访问,由此牺牲了性能。所述双端口存储器单元类型具有所述两者中的较好性能,因为处理器可以同时从该存储器写入和读取。然而,双端口存储器单元类型是所述两者中较大的,其增加了设备成本。所发现的挑战在于,当电路设计者选择所述存储器单元类型中的一个时,该电路设计者典型地或者牺牲性能或者增加设备成本。
另外,静态随机存取存储器(SRAM)被典型耦合到常规微处理器以用作高速缓存。在运转期间,所述高速缓存典型地在处理器需要除该高速缓存中的数据和指令之外的数据和指令时用新数据加载。结果,因为在其操作码和数据被加载到SRAM中并且可用于所述处理器之前指令不能被完成,所以所述处理器的程序在特定点停止。
因此,所需要的是这样一种系统和方法,其用于增加存储器性能而同时最小化该存储器需要的硅面积的大小从而最小化设备的成本。
发明内容
本发明的某些方面提供一种可以实施对同一存储体的窄读/写存储器访问和宽读/写存储器访问的系统和方法。所述系统例如使用窄读/写存储器访问处理16字节的加载/存储请求,以及还使用宽读/写存储器访问处理128字节的DMA请求和取指令请求。
根据一个实施例的系统使用多路复用器和锁存器来支持所述两种不同的存储器访问类型。当处理“存储”请求时,写多路复用器被配置为从处理器内核接收16字节的存储数据。所述16字节的存储数据被使用窄写存储器访问加载到存储器中。当处理“加载”请求时,加载多路复用器被配置为从所述存储器接收16字节的加载数据,并且将该加载数据提供给所述处理器内核。
取指令请求和DMA请求在一个实施例中使用宽存储器访问(例如128字节数据)来实施。当处理取指令请求时,读多路复用器被配置为从存储器接收128字节的取指令数据,并且将该数据提供给读锁存器。接着,所述处理器内核从该读锁存器检索所述取指令数据。通过一次读取128字节,例如32位(指令集)RISC体系结构中的32条指令,所述存储器被访问用于取指令的次数被最小化。
为最大化系统性能,处理DMA请求伴随着在一个指令周期中从/到存储器读和写多个DMA数据。单一DMA读或写操作包括相当十六个处理器周期的DMA数据。本发明使用写累加缓冲器和读锁存器来累加和存储所述DMA操作,以致所述存储体对于DMA请求每十六个指令周期被访问一次。在DMA写操作期间,DMA单元向所述写累加缓冲器发送DMA写数据(8字节)。所述写累加缓冲器存储该DMA写数据,并且确定其是否已接收到十六个连续的DMA写操作。
一旦所述写累加缓冲器接收到十六个连续的DMA写操作,则所述系统调度对所述存储器的宽写存储器访问。接着,所述写多路复用器被配置为从写累加缓冲器接收DMA数据,其中,所述数据在单一指令周期中加载到所述存储器中。
对于DMA读操作存在类似情形。在DMA读操作期间,所述系统配置读多路复用器为从存储器接收宽读存储器访问,并将其加载到所述读锁存器中。所述宽读存储器访问包括相当十六个指令周期的DMA数据。接着,所述读锁存器在十六个不同的指令周期中将该DMA数据提供给DMA单元。因此,即使DMA读操作和写操作以最大带宽进行,所述系统占用十六个指令周期中的两个来访问存储器,并且剩余的十四个指令周期仍然可用于所述系统进行加载和存储操作以及取指令。
为保存存储器阵列和累加锁存器之间的轨道(track),这里描述的本发明能够进行将所述读累加锁存器拆分为每个64字节的两个锁存器的存储器配置,由此具有以下额外优点:读取可以被对齐到64字节而不是128字节边界,并且由此保证每个读取导致相当至少64字节加4字节的独立于入口点(指令分支目标)的有效指令。
上述内容是概要,并且由此必然包括简化、一般化和细节的省略;因此,本领域的技术人员将理解,所述概要仅是说明性的,并且决不用于进行限制。如完全由权利要求所限定的本发明的其它方面、发明特征和优点在下面阐明的非限制性详细描述中将变得显而易见。
附图说明
下面参考附图借助于例子更详细描述了本发明的实施例,在附图中:
图1是能够进行窄读/写存储器访问和宽读/写存储器访问的协处理单元的高层图;
图2是示出了能够对同一存储器实施窄读/写存储器访问和宽读/写存储器访问的系统的图;
图3是示出了能够在拆分累加锁存器配置中实施窄读/写存储器访问和宽读/写存储器访问的系统的图;
图4A是示出了读锁存器配置的图;
图4B是示出了对读锁存器的单一DMA存储器读、由此该读锁存器跨十六个不同指令周期将DMA读操作提供给DMA单元的图;
图5A是示出了写累加缓冲器配置的图;
图5B是示出了包括十六个连续DMA写操作的对存储器的单一DMA存储器写的图;
图6是示出了调度DMA存储器写操作时采取的步骤的流程图;
图7是示出了处理存储器请求时采取的步骤的高层流程图;
图8是示出了处理DMA请求时采取的步骤的流程图;
图9是示出了处理加载或存储请求时采取的步骤的流程图;
图10是示出了处理取指令请求时采取的步骤的流程图;以及
图11是能够实现本发明的计算设备的框图。
具体实施方式
图1是能够进行窄读/写存储器访问和宽读/写存储器访问的协处理单元的高层图。协处理部件(SPE)100包括协处理单元(SPU)110和DMA单元150。SPU 110包括协执行单元120、信道单元130和本地存储140。
SXU 120访问本地存储140以进行取指令和加载/存储操作。在取指令操作期间,SPU 110执行宽读存储器访问,由此SXU 120从本地存储140接收128字节数据。在加载/存储操作期间,SPU 110执行窄读/写存储器访问,由此SXU 120从/向本地存储140读/写16字节数据。
SPU 110使用信道单元130来编程DMA单元150。DMA单元150从/向本地存储140读/写DMA读/写操作。本地存储140包括写累加缓冲器和读锁存器,由此所述二者的每个容纳128字节数据。在DMA写请求期间,DMA单元150向写累加缓冲器提供8字节DMA写操作。当所述写累加缓冲器接收到十六个连续的DMA写操作时,SPU 110实施宽写存储器访问,并且将写累加缓冲器的内容加载到存储器中。
对于DMA读操作存在类似情形。在DMA读请求期间,SPU 110实施宽读存储器访问,并且以十六个8字节DMA读操作加载读锁存器。随后,所述DMA数据在十六个不同的指令周期中被写入EIB 160。于是,由于读锁存器存储了相当十六个处理器周期的DMA数据,所述存储体在十五个指令周期中不需要实施加载/存储操作或取指令操作(更多细节见图2-10)。
图2是示出了能够对同一存储器实施窄读/写存储器访问和宽读/写存储器访问的系统的图。所述系统可以使用窄读/写存储器访问处理16字节加载/存储请求。另外,所述系统还可以使用宽读/写存储器访问处理128字节DMA和取指令请求。
图2示出了与图1中所示的相同的协执行单元(SXU)120和DMA单元150。图2还包括图1中所示的本地存储140的细节,所述细节包括写累加缓冲器210、写多路复用器230、存储器200、加载多路复用器250、读多路复用器270和读锁存器280。
当处理“存储”请求时,写多路复用器230被配置为从SXU 120接收16字节存储数据(即存储240)。所述16字节存储数据被使用窄写存储器访问加载到存储器200中。当处理“加载”请求时,加载多路复用器250被配置为从存储器200接收16字节加载数据,并且将所述加载数据提供给SXU 120(即加载260)(关于加载/存储操作的更多细节见图9和对应文本)。
取指令请求和DMA请求被使用宽存储器访问(例如128字节数据)实施。当处理取指令请求时,读多路复用器270被配置为从存储器200接收128字节取指令数据,并将其提供给读锁存器280。接着,SXU 120从读锁存器280检索所述取指令数据(即取指令285)(关于取指令请求的更多细节见图10和对应文本)。
为最大化系统性能,处理DMA请求伴随着在一个指令周期中从/向存储器读和写多个DMA数据。DMA读或写带宽是每周期8字节。本发明使用写累加缓冲器210和读锁存器280来累加和存储十六个DMA操作,使得存储器200对于DMA请求每十六个指令周期被访问一次(更多细节见图4A、4B、5A、5B和对应文本)。在DMA写操作期间,DMA单元150将DMA写220(8字节)发送到写累加缓冲器210。写累加缓冲器210存储DMA写220,并且确定其是否已接收到十六个连续的DMA写操作(关于DMA写数量跟踪的更多细节见图6和对应文本)。
一旦写累加缓冲器210确定其已接收到十六个连续的DMA写操作,所述系统就调度对存储器200的宽写存储器访问。接着,写多路复用器230被配置为从写累加缓冲器210接收DMA数据,所述DMA数据在单一指令周期中被加载到存储器200。通过在一个指令周期中加载十六个连续的DMA写操作,存储器200可用于在其它十五个指令周期期间处理加载/存储或取指令请求。例如,常规的单一端口存储器可以基于逐个循环地被利用如下:
“Lslrrrrrrrrrrrrrrrrslwwwwwwwwwwwwwwww”
其中,每个字符对应于一个指令周期,以及,l是加载,s是存储,r是8字节DMA读,以及w是8字节DMA写。通过使用这里描述的本发明,常规的单一端口存储器可以基于逐个循环地被利用如下:
“LslRslW”
其中,R是128字节DMA读(宽读),以及W是128字节DMA写(宽写)。如可以看到的,由于每个字符对应于一个处理器周期,所述第二个序列在少得多的处理器周期中完成,并且由此允许显著提高的处理器性能(更多细节见图4A、4B、5A、5B和对应文本)。
在DMA读操作期间,所述系统将读多路复用器270配置为从存储器200接收宽读存储器访问,并将其加载到读锁存器280中。所述宽读存储器访问包括相当十六个处理器周期的DMA数据。接着,读锁存器280将相当十六个处理器周期的DMA数据提供给(即DMA读290)DMA单元150。
图3是示出了能够在拆分累加锁存器配置中实施窄读/写存储器访问和宽读/写存储器访问的系统的图。除图3包括用于拆分累加锁存器能力的两个存储体而不是图2中所示的一个存储体之外,图3类似于图2。所述组织的好处在于,仅64字节宽总线被连接到所述指令单元和DMA单元。
图3包括偶存储体300和奇存储体305。当处理“存储”请求时,写多路复用器330或335被配置为从SXU 120接收16字节的存储数据(即存储240)。所述16字节的存储数据240被使用窄写存储器访问加载到存储体300或305中。当处理“加载”请求时,加载多路复用器350被配置为从偶存储体300或奇存储体305接收16字节的加载数据(即加载260)。SXU 120、存储240和加载260与图2中所示的相同。
在拆分累加锁存器配置中,取指令请求和DMA请求仍然使用宽存储器访问来实施(例如128字节数据)。当处理取指令请求时,读多路复用器370被配置为从偶存储体300接收64字节的取指令数据并将其提供给读锁存器380。在同一指令周期中,读锁存器385从奇存储体305接收64字节的取指令数据。SXU 120从读锁存器280检索所述“偶存储体”取指令数据(即取指令285)。一旦SXU 120从读锁存器380检索所有的所述偶存储体数据,则读多路复用器370被配置为从读锁存器385接收奇存储体取指令数据并将其提供给读锁存器380。接着,SXU 120从读锁存器380检索所述奇存储体数据。
在DMA写操作期间,DMA单元150将DMA写220发送到写累加缓冲器310和315。图3中所示的写累加缓冲器的每个能够累加64字节的DMA写数据。当所述系统确定所述写累加缓冲器已接收到总共十六个DMA写操作(总共128字节)时,所述系统调度对存储体300和305的宽写存储器访问。接着,写多路复用器330和335被配置为分别从写累加缓冲器310和315接收DMA数据。所述DMA数据然后在单一指令周期中被加载到存储体300和305中。
在处理读锁存器的配置时DMA读请求类似于取指令请求。在DMA读操作期间,读多路复用器370被配置为从偶存储体300接收64字节的DMA读数据并将其提供给读锁存器380。在同一指令周期期间,读锁存器385从奇存储体305接收64字节的DMA读数据。读锁存器380将所述偶存储体DMA数据提供给DMA单元150。一旦DMA单元150接收到包括在所述偶存储体数据中的每个DMA读数据,则读多路复用器370被配置为从读锁存器385接收奇存储体DMA读数据并将其提供给读锁存器380。接着,DMA单元150从读锁存器380检索所述奇存储体DMA读数据。
图4A是示出了读锁存器配置的图。图4A示出了图2中所示的读锁存器280的配置。数据被使用宽读存储器访问从存储体传送到读锁存器280。所述宽读存储器访问提供十六个8字节操作(DMA读或取指令),总共128字节。在例如图3中所示的拆分累加锁存器配置中,存在两个读锁存器,由此每个读锁存器从存储器接收八个8字节操作。
在DMA读期间,所述系统在一个指令周期期间从存储器读出相当十六个处理器周期的DMA数据,并且然后将所述DMA数据提供给DMA单元(更多细节见图8和对应文本)。
图4B是示出了对读锁存器的单一DMA存储器读、由此该读锁存器在十六个不同指令周期中将DMA读操作提供给DMA单元的图。时间轴400示出了十六个指令周期(t1-t16)以及在每个指令周期期间对于与图2中所示的相同的存储器200、读锁存器280和DMA单元150存在的活动。
在时刻t1,所述系统实施宽读存储器访问,并且读出存储器200的128字节,以及将十六个8字节DMA读操作存储到读锁存器280中。同样在时刻t1,读锁存器280将一个DMA读操作(8字节)提供给DMA单元150。由于读锁存器280存储了相当十六个处理器周期的DMA数据,所以读锁存器280还在时刻t2到t16将DMA读操作提供给DMA单元150。因此,在时刻t2-t16期间,存储器200不需要实施加载/存储操作或取指令操作。在时刻t17(未示出),读锁存器280可以从存储器200接收相当十六个处理器周期的另一DMA数据。
在拆分累加锁存器实施例中,例如图3中所示的读锁存器380和385的两个读锁存器在时刻t1被各自加载了八个8字节DMA读操作。然后,在该实施例中,一个读锁存器在八个指令周期中将其八个DMA读操作提供给DMA单元150,以及另一读锁存器在再八个指令周期中将其八个DMA操作提供给DMA单元150。
图5A是示出了写累加缓冲器配置的图。图5A示出了图2中所示的写累加缓冲器210的配置。DMA单元150(图2中所示)在十六个不同指令周期中将8字节DMA写数据发送到写累加缓冲器210,总共128字节数据。
一旦写累加缓冲器接收到所述128字节数据,则所述系统调度对存储器的宽写存储器访问(更多细节见图6和对应文本)。所述系统然后实施对存储器的宽写存储器访问,并在一个时钟周期期间将所述十六个连续的DMA写操作加载到存储器中(更多细节见图5B和对应文本)。在例如图3中所示的拆分累加锁存器配置中,两个写累加缓冲器从DMA单元150接收八个DMA写操作,并且然后其在一个指令周期中将总共十六个连续的DMA写操作加载到存储器中。
图5B是示出了包括十六个连续的DMA写操作的对存储器的单一DMA存储器写的图。时间轴500示出了十六个指令周期,以及在每个指令周期中对于与图2中所示的相同的存储器200、写累加缓冲器210和DMA单元150存在的活动。
在时刻t1,DMA单元150将DMA写操作存储在写累加缓冲器210中。同样在时刻t1,存储器200不需要实施加载/存储操作或取指令操作。在时刻t2到t15同样适用的在于,DMA单元150将DMA写操作加载到写累加缓冲器210中,以及存储器200不需要实施加载/存储操作或取指令操作。在时刻t16,DMA单元150将其十六个DMA写操作加载到写累加缓冲器210中,并且所述系统实施宽写存储器访问,并且将写累加缓冲器210的内容加载到存储器200中。
在拆分累加锁存器的实施例中,例如图3中所示的写累加缓冲器310和315的两个写累加缓冲器在时刻t16将其内容加载到存储器中。
图6是示出了调度DMA存储器写操作时采取的步骤的流程图。系统包括写累加缓冲器,在该缓冲器填满之前其存储DMA写。一旦该缓冲器填满,则所述系统实施对其存储器的宽写存储器访问。例如,如果DMA写为8字节长,则所述写累加缓冲器接收十六个DMA写,并且然后所述系统实施对存储器的包括所述十六个DMA写的128字节写访问(更多细节见图5A、5B和对应文本)。
处理在600开始,在此,处理等待来自DMA单元150的DMA写请求。DMA单元150与图1中所示的相同。一旦系统接收到DMA写请求,所述系统将该DMA写数据存储在写累加缓冲器210中(步骤620)。写累加缓冲器210与图1中所示的相同。在步骤630,处理增加DMA写计数器635。DMA写计数器635被用于跟踪已被存储在写累加缓冲器210中的DMA写的数量。
关于DMA写计数器635是否等于十六的确定被作出(判断640)。图6中描述的例子所用于的系统具有的宽写存储器访问大小是其DMA写的十六倍,例如对于8字节DMA写的128字节宽写存储器访问。如本领域的技术人员可以理解的,DMA写计数器635所到达的值取决于相比于系统DMA写大小的所述系统的宽写存储器访问的大小,并且该比率可以小于或大于十六。
如果DMA写计数器635不等于十六,则判断640分支到循环回以继续处理更多DMA写请求的“否”分支642。该循环继续,直到DMA写计数器635到达十六,在该点,判断640分支到“是”分支648。处理对于存储在写累加缓冲器210中的DMA写调度对存储器的宽写存储器访问(步骤650),并且处理在步骤660清除DMA写计数器635。
关于是否继续处理DMA写请求的确定被作出(判断670)。如果处理应当继续处理DMA写请求,则判断670分支到循环回以处理更多DMA写请求的“是”分支672。该循环继续,直到处理应当终止,在该点,判断670分支到在处理在680结束的“否”分支678。
图7是示出了处理存储器请求时采取的步骤的高层流程图。在一个实施例中,系统优先化存储器访问请求以便使DMA请求是最高优先的,然后是加载/存储请求,然后是取指令请求。图7中所示的流程图是在上面实施例中讨论的请求优先化的例子。
处理在700开始,由此处理在步骤710等待指令周期。一旦处理检测到指令周期,则关于处理是否接收到DMA请求的确定被作出(判断720)。如果处理接收到DMA请求,则判断720分支到“是”分支722,由此处理对该DMA请求进行处理并且实施到/从存储器的宽写/读访问(预定义处理框730,更多细节见图8和对应文本)。
另一方面,如果处理还未接收到DMA请求,则判断720分支到“否”分支728,由此关于处理是否接收到加载/存储请求的确定被作出(判断740)。如果处理接收到加载/存储请求,则判断740分支到“是”分支742,由此处理对该加载/存储请求进行处理并且实施到/从存储器的窄写/读访问(预定义处理框750,更多细节见图9和对应文本)。
另一方面,如果处理还未接收到加载/存储请求,则判断740分支到“否”分支748,由此,关于处理是否接收到取指令请求的确定被作出(判断760)。如果处理接收到取指令请求,则判断760分支到“是”分支762,由此,处理对该取指令请求进行处理并实施从存储器的宽读存储器访问(预定义处理框770,更多细节见图10和对应文本)。另一方面,如果处理还未接收到取指令请求,则判断760分支到“否”分支768。
关于是否继续存储器请求判优(arbitration)的确定被作出(判断780)。如果处理应当继续存储器请求判优,则判断780分支到循环回以处理更多存储器访问请求的“是”分支782。该循环继续,直到处理应当停止存储器请求判优,在该点,判断780分支到由此处理在790结束的“否”分支788。
图8是示出了处理DMA请求时采取的步骤的流程图。DMA活动具有比加载/存储和取指令请求更高的优先权(见图7)。在一个实施例中,DMA请求可以被调度以在每十六个指令周期中发生,剩下十五个指令周期来容纳加载/存储请求和取指令请求(更多细节见图4A、4B、5A、5B和对应文本)。
DMA请求处理在800开始,由此关于该DMA请求是DMA读请求还是DMA写请求的确定被作出(判断810)。如果其是DMA写请求,则判断810分支到“写”分支812。处理将写累加缓冲器210、写多路复用器230配置为在步骤820从写累加缓冲器接受数据。写累加缓冲器210和写多路复用器230与图2中所示的相同。
在步骤830,处理实施对存储器200的宽写存储器访问,由此,来自写累加缓冲器210的DMA写数据被通过写多路复用器230写到存储器200中。所述宽写存储器访问是一行(128字节),并且包括十六个DMA写(每个8字节)。处理在840返回。
如果所述DMA请求是DMA读请求,则判断810分支到“读”分支818。处理将读多路复用器270配置为从存储器200接收数据,并且将该数据提供给读锁存器280(步骤850)。读多路复用器270和读锁存器280与图2中所示的相同。在步骤860,处理实施从存储器200的宽读存储器访问,由此DMA读数据被从存储器200中读出,并且被通过读多路复用器270存储在读锁存器280中。所述DMA读数据包括十六个8字节DMA读。
处理将来自读锁存器280的所述十六个DMA读在十六个不同指令周期中发送到DMA单元150(步骤870),并且处理在880返回。
图9是示出了处理加载或存储请求时采取的步骤的流程图。加载和存储请求被以比DMA请求更低但比取指令请求更高的优先权进行调度(关于请求优先化的更多细节见图7和对应文本)。
处理在900开始,由此关于该请求是加载请求还是存储请求的确定被作出(判断910)。如果该请求是存储请求,则判断910分支到“存储”分支912。处理将写多路复用器230配置为从协执行单元(SXU)120接收数据。SXU 120和写多路复用器230与图2中所示的相同。
在步骤930,处理实施对存储器200的窄写访问,由此来自SXU 120的存储数据被通过写多路复用器230写到存储器200中。所述窄写访问的长度可以是四倍字长的,或可以是单字长的。处理在940返回。
如果该请求是加载请求,则判断910分支到“加载”分支918。处理将加载多路复用器250配置为从存储器200接收数据,并且将该数据提供给SXU 120(步骤950)。加载多路复用器250与图2中所示的相同。在步骤960,处理实施从存储器200的窄读存储器访问,由此加载数据被从存储器200读出并通过加载多路复用器250发送到SXU 120。处理在880返回。
图10是示出了处理取指令请求时采取的步骤的流程图。在一个实施例中,取指令请求处在比DMA请求和加载/存储请求更低的优先权。处理在1000开始,由此,处理将读多路复用器270配置为从存储器200接收数据并将该数据提供给读锁存器280(步骤1020)。读多路复用器270和读锁存器280与图2中所示的相同。在步骤1040,处理实施从存储器200的宽读存储器访问,由此,取指令数据被从存储器200读出并通过读多路复用器270存储在读锁存器280中。
处理在步骤1060从读锁存器280检索所述取指令数据,并将该数据加载到协执行单元(SXU)120中。SXU 120与图2中所示的相同。处理在1080返回。
图11是能够实现本发明的计算设备的框图。图11中所示的体系结构包括共享公共存储器和公共总线的异构处理器。宽带引擎(BE)1100通过部件互连单元1170向/从外部设备发送和接收信息,并且使用部件互连总线160将该信息分配给控制平面1110和数据平面1140,其中,所述部件互连总线160与图1中所示的相同。控制平面1110管理BE 1100,并且向数据平面1140分配工作。
另外,部件互连总线(EIU)160提供对存储器接口控制器(MIC)1180的读和写请求。存储器接口控制器1180将该请求传送到存储器接口1190,该存储器接口1190接着与外部存储器通信。
控制平面1110包括运行操作系统(OS)1125的主处理部件(PPE)1120。例如,PPE 1120可以是被嵌入到BE 1100中的Power PC内核,而OS 1125可以是Linux操作系统。PPE 1120管理用于BE 1100的公共存储器映射表。所述存储器映射表对应于例如L2存储器1130的包括在BE 1100中的存储器位置以及包括在数据平面1140中的非私用存储器。
数据平面1140包括协处理部件(SPE)100、1150和1155。SPE 100与图1中所示的相同。每个SPE被用于处理数据信息,以及每个SPE可以具有不同的指令集。例如,BE 1100可以被用于无线通信系统中,以及每个SPE可以负责例如调制、芯片速率处理、编码和网络接口的单独处理任务。在另一例子中,每个SPE可以具有相同的指令集,以及可以被并行地用于实施受益于并行过程的操作。每个SPE包括协处理单元(SPU),所述协处理单元是处理内核,例如数字信号处理器、微控制器、微处理器或这些内核的组合。
SPE 100、1150和1155被连接到处理器部件总线1160,其中,该处理器部件总线1160在控制平面1110、数据平面1140和输入/输出1170之间传递信息。总线160是片上附着多处理器总线。EIU 1170包括灵活输入-输出逻辑,其基于连接到BE 1100的外围设备动态地将接口引脚分配给输入-输出控制器。
尽管图11中描述的所述计算机系统能够执行这里描述的所述过程,但该计算机系统仅是计算机系统的一个示例。本领域的技术人员将理解,许多其它计算机系统设计能够实施这里描述的所述过程。
本发明的优选实现中的一个是客户应用,即可以例如驻留在计算机的随机存取存储器中的代码模块中的指令集(程序代码)。直到被计算机需要之前,该指令集可以被存储在另一计算机存储器中,例如在硬盘驱动器中,或者在例如光盘(用于最终在CD ROM中使用)或软盘(用于最终在软盘驱动器中使用)的可移除存储器中,或者经由因特网或其它计算机网络下载。由此,本发明可以被实现为用于在计算机中使用的计算机程序产品。另外,尽管所描述的各种方法便利地以由软件选择性激活或重配置的通用计算机来实现,但本领域的技术人员还将认识到,所述方法可以以硬件、固件或被构造为实施所需的方法步骤的更专用装置来实现。
尽管本发明的特定实施例已被示出和描述,但基于这里的教导,在不脱离本发明及其较宽方面的情况下可以产生改变和修改,这对于本领域的技术人员将是显而易见的。因此,权利要求将在其范围内包括落在本发明的真正精神和范围内的所有所述改变和修改。另外,应当理解,本发明仅由权利要求定义。本领域的技术人员将理解,如果特定编号的所介绍的权利要求单元是有所意图的,则所述意图将在该权利要求中明确陈述,以及,在所述陈述不出现的情况下,则不出现任何所述限制。对于非限制性例子,作为对理解的帮助,权利要求包含介绍性短语“至少一个”和“一个或多个”的使用,以便介绍权利要求单元。然而,甚至当同一权利要求包括介绍性短语“一个或多个”或“至少一个”和例如“一个(a)”或“一个(an)”的不定冠词时,所述短语的使用也不应当被理解为,暗示由不定冠词“一个(a)”或“一个(an)”进行的权利要求单元的介绍将包含所述介绍的权利要求单元的任意特定权利要求限于仅包含一个所述单元的发明;所述内容同样适用于定冠词在权利要求中的使用。

Claims (16)

1.一种数据处理系统,包括支持对单一存储器空间的窄读/写存储器访问和宽读/写存储器访问的存储器;以及累加多个DMA写操作的写累加缓冲器,其中,所述多个DMA写操作对应于所述宽写存储器访问。
2.根据权利要求1所述的系统,其中,所述窄读/写存储器访问对应于加载/存储请求,以及所述宽读/写存储器访问对应于DMA请求。
3.根据权利要求1所述的系统,其中,所述窄读/写存储器访问对应于加载/存储请求,以及所述宽读/写存储器访问对应于取指令请求和DMA请求。
4.根据权利要求3所述的系统,其中,所述系统有效用于:
优先化所述加载/存储请求、所述取指令请求和所述DMA请求,所述系统进一步有效用于:
当所述DMA请求可用时,在处理所述加载/存储请求和所述取指令请求之前处理所述DMA请求;以及
当所述加载/存储请求可用时,在处理所述取指令请求之前处理所述加载/存储请求。
5.根据权利要求1所述的系统,其中,所述多个DMA写操作对应于多个指令周期,以及所述宽写存储器访问对应于单一指令周期。
6.根据权利要求1所述的系统,进一步包括:
从所述宽读存储器访问接收DMA数据的读锁存器,所述DMA数据对应于多个DMA读操作;以及
从所述读锁存器在多个指令周期中接收所述多个DMA读操作的DMA单元。
7.根据权利要求1所述的系统,其中,所述窄读/写存储器访问对应于四倍字长,以及所述宽读/写存储器访问对应于存储器的一行,以及其中,所述存储器被用于所述系统中的协处理部件中。
8.根据权利要求1所述的系统,其中,所述系统支持在所述存储器中具有拆分累加锁存器能力的多个存储体。
9.根据权利要求8所述的系统,其中,在对应于加载/存储请求的窄读/写存储器访问期间,所述系统访问所述多个存储体中的一个,以及其中,剩余的多个存储体不被访问。
10.根据权利要求1所述的系统,其中,所述宽读/写存储器访问对应于高速缓存行清除或重载操作。
11.根据权利要求1所述的系统,包括:第一读锁存器和第二读锁存器;
其中所述第一读锁存器用于在宽读存储器访问期间从单一存储器空间和从第二读锁存器接收数据,其中,所述第二读锁存器从所述单一存储器空间接收数据,并将所述数据储备用于所述第一读锁存器。
12.根据权利要求1所述的系统,包括:
第一类型处理器;以及
一个或多个第二类型处理器,其中,所述存储器被包括在所述第二类型处理器中。
13.一种计算机实现方法,包括:
接收存储器请求;
确定所述存储器请求是对应于对存储器的窄读/写存储器访问还是对存储器的宽读/写存储器访问;
处理所述存储器请求;以及
累加用于所述宽写存储器访问的多个DMA写操作,其中,所述多个DMA写操作对应于多个指令周期,以及所述宽写存储器访问对应于单一指令周期。
14.根据权利要求13所述的方法,其中,所述窄读/写存储器访问对应于加载/存储请求,以及所述宽读/写存储器访问对应于取指令请求和DMA请求。
15.根据权利要求14所述的方法,进一步包括:
优先化所述加载/存储请求、所述取指令请求和所述DMA请求,所述优先化进一步包括:
当所述DMA请求可用时,在处理所述加载/存储请求和所述取指令请求之前处理所述DMA请求;以及
当所述加载/存储请求可用时,在处理所述取指令请求之前处理所述加载/存储请求。
16.根据权利要求13所述的方法,进一步包括:
响应于所述宽读存储器访问,接收DMA数据,其中所述DMA数据对应于多个DMA读操作;以及
在多个指令周期中提供所述多个DMA读操作。
CN2006800039185A 2005-02-03 2006-01-25 用于具有组合行和字访问的存储器的系统和方法 Active CN101111828B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/050,040 2005-02-03
US11/050,040 US7617338B2 (en) 2005-02-03 2005-02-03 Memory with combined line and word access
PCT/EP2006/050433 WO2006082154A2 (en) 2005-02-03 2006-01-25 System and method for a memory with combined line and word access

Publications (2)

Publication Number Publication Date
CN101111828A CN101111828A (zh) 2008-01-23
CN101111828B true CN101111828B (zh) 2010-10-13

Family

ID=36097154

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800039185A Active CN101111828B (zh) 2005-02-03 2006-01-25 用于具有组合行和字访问的存储器的系统和方法

Country Status (8)

Country Link
US (1) US7617338B2 (zh)
EP (1) EP1849083B1 (zh)
JP (1) JP4931828B2 (zh)
CN (1) CN101111828B (zh)
AT (1) ATE415664T1 (zh)
DE (1) DE602006003869D1 (zh)
TW (1) TWI362591B (zh)
WO (1) WO2006082154A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681014B2 (en) * 2005-02-04 2010-03-16 Mips Technologies, Inc. Multithreading instruction scheduler employing thread group priorities
US8015323B2 (en) * 2006-02-28 2011-09-06 Infineon Technologies Ag Acquisition of data and autonomous transfer of data through communication interface in automotive system
WO2008089335A2 (en) * 2007-01-17 2008-07-24 Encirq Corporation Systems and methods for a devicesql parallel query
JP4356030B2 (ja) * 2007-05-17 2009-11-04 ソニー株式会社 情報処理装置および方法
US7941574B2 (en) * 2008-08-11 2011-05-10 International Business Machines Corporation CKD partial record handling
US7870309B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Multithreaded programmable direct memory access engine
US7870308B2 (en) * 2008-12-23 2011-01-11 International Business Machines Corporation Programmable direct memory access engine
JP6146128B2 (ja) * 2013-05-20 2017-06-14 ヤマハ株式会社 データ処理装置
US9842630B2 (en) * 2013-10-16 2017-12-12 Rambus Inc. Memory component with adjustable core-to-interface data rate ratio
CN104019752B (zh) * 2014-05-29 2015-11-25 京东方科技集团股份有限公司 显示屏的厚度均匀性检测方法、装置及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6341318B1 (en) * 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6351784B1 (en) * 1998-12-28 2002-02-26 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0288649B1 (en) * 1987-04-22 1992-10-21 International Business Machines Corporation Memory control subsystem
US4918587A (en) * 1987-12-11 1990-04-17 Ncr Corporation Prefetch circuit for a computer memory subject to consecutive addressing
US4929246A (en) * 1988-10-27 1990-05-29 C. R. Bard, Inc. Method for closing and sealing an artery after removing a catheter
US5446845A (en) * 1993-09-20 1995-08-29 International Business Machines Corporation Steering logic to directly connect devices having different data word widths
US5669013A (en) * 1993-10-05 1997-09-16 Fujitsu Limited System for transferring M elements X times and transferring N elements one time for an array that is X*M+N long responsive to vector type instructions
US5784700A (en) * 1994-12-12 1998-07-21 Texas Instruments Incorporated Memory interface with address shift for different memory types
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US7386671B2 (en) * 2000-06-09 2008-06-10 Texas Instruments Incorporated Smart cache
EP1182564A3 (en) * 2000-08-21 2004-07-28 Texas Instruments France Local memory with indicator bits to support concurrent DMA and CPU access
US6775727B2 (en) * 2001-06-23 2004-08-10 Freescale Semiconductor, Inc. System and method for controlling bus arbitration during cache memory burst cycles
JP2003044354A (ja) * 2001-07-26 2003-02-14 Matsushita Electric Ind Co Ltd メモリ制御装置
US6920510B2 (en) * 2002-06-05 2005-07-19 Lsi Logic Corporation Time sharing a single port memory among a plurality of ports

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6351784B1 (en) * 1998-12-28 2002-02-26 International Business Machines Corp. System for determining whether a subsequent transaction may be allowed or must be allowed or must not be allowed to bypass a preceding transaction
US6341318B1 (en) * 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming

Also Published As

Publication number Publication date
EP1849083A2 (en) 2007-10-31
CN101111828A (zh) 2008-01-23
JP4931828B2 (ja) 2012-05-16
US20060179176A1 (en) 2006-08-10
JP2008529181A (ja) 2008-07-31
TWI362591B (en) 2012-04-21
TW200632668A (en) 2006-09-16
WO2006082154A3 (en) 2006-09-21
WO2006082154A2 (en) 2006-08-10
US7617338B2 (en) 2009-11-10
ATE415664T1 (de) 2008-12-15
DE602006003869D1 (de) 2009-01-08
EP1849083B1 (en) 2008-11-26

Similar Documents

Publication Publication Date Title
CN101111828B (zh) 用于具有组合行和字访问的存储器的系统和方法
US7487302B2 (en) Service layer architecture for memory access system and method
TW384426B (en) Virtual channel memory system
US5594877A (en) System for transferring data onto buses having different widths
AU2001245761B2 (en) Enhanced memory algorithmic processor architecture for multiprocessor computer systems
KR960016397B1 (ko) 화일기억장치 및 그것을 사용한 정보처리장치
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US7617383B2 (en) Circular register arrays of a computer
US7386653B2 (en) Flash memory arrangement
AU2001245761A1 (en) Enhanced memory algorithmic processor architecture for multiprocessor computer systems
US5440717A (en) Computer pipeline including dual-ported, content-addressable writebuffer
US20080320204A1 (en) Memory system and method with flash memory device
JP4226085B2 (ja) マイクロプロセッサ及びマルチプロセッサシステム
CZ9603197A3 (cs) Počítačový systém a způsob přenosu informace
US6606684B1 (en) Multi-tiered memory bank having different data buffer sizes with a programmable bank select
JP2009505180A (ja) 少なくとも2つの処理ユニットと、及び少なくとも1つのメモリとを有する計算機システム内に形成される及び記憶装置、及びそれによる記憶方法
US4639862A (en) Computer system
CN103140834A (zh) 用于填充存储器区域的处理器支持
CA1304522C (en) Memory address generation apparatus
AU596234B2 (en) Method and device to execute two instruction sequences in an order determined in advance
EP1596280A1 (en) Pseudo register file write ports
US6594710B1 (en) Apparatus and method for a random access peripheral unit
JPH0421222B2 (zh)
US20040117582A1 (en) Method of analyzing data untilizing queue entry
CA2252291C (en) A method of implementing vector operation using a processor chip which is provided with a vector unit

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