CN1238793C - 分布式存储器控制和带宽优化 - Google Patents
分布式存储器控制和带宽优化 Download PDFInfo
- Publication number
- CN1238793C CN1238793C CNB008191816A CN00819181A CN1238793C CN 1238793 C CN1238793 C CN 1238793C CN B008191816 A CNB008191816 A CN B008191816A CN 00819181 A CN00819181 A CN 00819181A CN 1238793 C CN1238793 C CN 1238793C
- Authority
- CN
- China
- Prior art keywords
- memory access
- controller
- memory
- arbiter
- request
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
一种随机存取存储器的控制器具有控制逻辑,其包括检测未完成的存储器访问状态的判优器。控制器从多个存储器访问队列中的一个选择存储器访问。控制逻辑在装置允许对连续的存储器访问进行特殊处理时响应存储器***位。
Description
背景技术
本发明涉及并行处理器的存储***。
并行处理是处理计算过程中并发事件的信息的有效形式。并行处理同顺序处理相比,需要在计算机中同时执行许多程序。在并行处理器的范畴中,并行性包括在同一时刻做超过一件的事情。不像其中所有的任务都在一个工作站按顺序完成的串行模式,或其中任务在特殊化的工作站通过并行处理完成的流水线机器,并行处理情况下提供了每一个都能完成所有任务的多个工作站。也就是说,通常,所有或多个工作站在问题的相同或共同基础上同时且独立地工作。某些问题适合通过施加并行处理来解决。
并行处理能在存储***上形成约束,特别当不同的设备能从相同的存储***写或读的时候。
发明内容
根据本发明的一个方面,随机存取存储器的控制器包括控制逻辑,包括检测未完成的存储器访问的状态以从存储器访问的多个队列之一选择存储器访问的判优器。控制逻辑当装置允许对邻近的存储器访问进行特殊处理时,响应存储器***位。
附图说明
图1是使用以硬件为基础的多线路处理器的通信***的框图。
图2是图1的以硬件为基础的多线路处理器的详细的框图。
图3是图1和图2的以硬件为基础的多线路处理器中使用的微引擎功能单元的框图。
图4是在以硬件为基础的多线路处理器中使用的用于提高的带宽操作的内存控制器的框图。
图4A是表示图4的SDRAM控制器中的判优策略的流程图。
发明描述
参考图1,通信***10包括并行的、以硬件为基础的多线路处理器12。以硬件为基础的多线路处理器12与诸如***部件互连(PCI)总线14之类的总线、存储器***16和第二总线18相连。***10对能被分解成并行的子任务或功能的任务特别有用。以硬件为基础的多线路处理器12对跟带宽有关而跟等待时间无关的任务特别有用。以硬件为基础的多线路处理器12具有多重微引擎22,每一个微引擎均带多重的能同时有效且能在一项任务上独立工作的硬件控制的线路。
以硬件为基础的多线路处理器12还包括中央控制器20,其协助负载以硬件为基础的多线路处理器12的其它资源的微码控制,并完成其它通用计算机类型的功能,诸如处理协议、异常以及在诸如边界条件之类的微引擎终止数据包以获取更详细处理的条件下对分组处理的额外支持。在一实施例中,处理器20是以StrongArm(Arm是英国ARM有限公司的商标)为基础的结构。通用微处理器20具有操作***。通过操作***,处理器20能调用功能以在微引擎22a-22f上操作。处理器20能使用任何支持的操作***,较佳为实时操作***。对于作为Strong Arm结构使用的核心处理器,可使用诸如微软(Microsoft)NT实时、VXWorks和uCUS以及在互联网上提供的免费软件操作***之类的操作***。
以硬件为基础的多线路处理器12还包括多个功能微引擎22a-22f。每一个功能性微引擎(微引擎)22a-22f都在硬件上保持多个程序计数器并与程序计数器相关的状态。相应的多个系列的线路能有效地同时在22a-22f中的每一个微引擎上有效,同时在任何一个时刻只有一条线路在进行实际操作。
在一个实施例中,如图所示,有六个微引擎22a-22f。微引擎22a-22f有处理四个硬件线路的能力。六个微引擎22a-22f用包括存储***16与总线接口24和28的共享资源进行操作。存储***16包括同步动态随机存取存储器(SDRAM)控制器26a和静态随机存取存储器(SRAM)控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大容量数据,比如,处理网络数据包的网络有效负载。SRAM控制器26b和SRAM存储器16b用于低等待时间、快速存取任务的网络应用,比如,存取检索表、核心处理器20的存储器,等等。
六个微引擎22a-22f以数据的特性为基础对SDRAM16a或者SRAM16b进行存取。从而,低等待时间、低带宽的数据被存入SRAM并从中提取,而等待时间并非如此重要的带宽较高的数据被存入SDRAM并从中提取。微引擎22a-22f能执行对SDRAM控制器26a或SRAM控制器16b的存储器访问指令。
硬件多线路操作的优点可通过SRAM或SDRAM存储器的存取来解释。举例来说,来自微引擎、通过线路0请求的SRAM存取将造成SRAM控制器26b引发对SRAM存储器16b的存取。SRAM控制器控制SRAM总线的判优,对SRAM16b进行存取,从SRAM16b提取数据,以及将数据返回到需求微引擎22a-22b。在SRAM的存取过程中,如果微引擎比如22a只有一个可操作的单独线路,该引擎将静止直到数据从SRAM返回。通过在22a-22f中每一个微引擎内使用硬件关联交换技术,硬件关联交换技术使带独特程序计数器的其它关联在那相同的微引擎中执行。由此,另外一条线路,比如线路1能运行,同时第一条线路,比如线路0正在等待读取数据的返回。在执行过程中,线路1可对SDRAM存储器16a进行存取。当线路1在SDRAM单元上操作,且线路0在SRAM单元上操作时,一条新的线路,比如线路2现在能够在微引擎22a内操作。线路2能够操作一定的时间直到它需要对存储器进行存取或完成某些其它的长等待时间的操作,比如对总线接口进行存取。因此,在同时,处理器12可有凭借一个微引擎22a完成或操作的总线操作、SRAM操作和SDRAM操作,以及具有供应给在数据通道处理更多操作的另一条线路。
硬件关联交换技术同样与任务同步完成。举例来说,两条线路可选中相同的共享资源,比如SRAM。这些功能分离单元,比如FBUS接口28、SRAM控制器26a和SDRAM控制器26b,当它们完成来自于一个微引擎线路关联的所请求的任务时,每一个单元都会返回报告操作完成的标志信号。当微引擎接收到标志时,微引擎能检测到该开启哪一条线路。
以硬件为基础的多线路处理器12应用的一个例子是用作网络处理器。作为网络处理器时,以硬件为基础的多线路处理器12与诸如媒体控制设备,比如一台10/100BaseT的Octal MAC 13a或一台Gigabit Ethernet设备13b之类的网络设备对接。总的来说,作为网络处理器时,以硬件为基础的多线路处理器12能与任何类型的通信设备或接收/发送大量数据的通信接口对接。在网络应用中运行的通信***10可接收到多个来自设备13a和13b的网络数据包,并且可以并行的方式处理那些数据包。配备了以硬件为基础的多线路处理器12后,每个网络数据包可独立地被处理。
使用处理器12的另一个例子是附言处理器的印刷机械或作为存储子***,比如RAID磁盘存储器的处理器。进一步的使用是作为匹配引擎。举例来说,在安全工业中,电子贸易的出现需要使用电子匹配引擎来匹配购买者与销售者之间的订单。这些以及其它并行型任务可在***10上完成。
处理器12包括将处理器同第二总线18连接的总线接口28。在一个实施例中的总线接口28将处理器12同称之为FBUS的18(FIFO总线)相连。FBUS接口28负责控制并将处理器12同FBUS18相连。FBUS18是用于对接媒体访问控制器(MAC)设备的64位宽的FIFO总线。
处理器12包括第二接口,比如将其它属于PCI14总线的***元件同处理器12连接的PCI总线接口24。PCI总线接口24为存储器16,比如SDRAM存储器16a提供高速数据通道24a。凭借这个通道,数据可从SDRAM 16a通过PCI总线14,依靠直接存储器存取(DMA)转移迅速被除去。以硬件为基础的多线路处理器12支持图像转移。以硬件为基础的多线路处理器12可使用多个DMA通道,因此,如果DMA转移的一个目标处于忙碌状态,另一个DMA通道可代替PCI总线将信息传送至另一个目标以维持处理器12的高效率。另外,PCI总线接口24支持目标和主要操作。目标操作是其中在总线14上的次要设备通过作为目标操作次要的读写操作对SDRAM进行存取的操作。在主要操作中,处理器核心20向PCI接口24直接发送数据或直接从PCI接口24接收数据。
每一个功能性单元均与一个或更多内部总线相连。如以下所描述的,内部总线是两路32位的总线(也就是,一路总线用于读操作,一路用于写操作)。以硬件为基础的多线路处理器12同样被如此构造,使处理器12中的内部总线的带宽量超过与处理器12连接的外部总线的带宽。处理器12包括内部核心处理器总线32,比如将处理器核心20同存储控制器26a和26c相连并同下述的ASB译码器30相连的ASB总线(高级***总线)。ASB总线是同Strong Arm处理器核心一起使用的称之为AMBA总线的子集。处理器12还包括将微引擎单元同SRAM控制器16b、ASB译码器30以及FBUS接口28相连的专用总线34。存储器总线38将存储控制器26a和26b与总线接口24和28以及包括用于引导操作等的快擦写只读存储器16c的存储器***16相连。
参考图2,22a-22f中的每一个微引擎包括检查标志以判定在其上进行操作的可用线路的判优器。22a-22f中任一的微引擎的任何线路能够对SDRAM控制器26a、SDRAM控制器26b或FBUS接口28进行存取。每一个存储控制器26a和26b包括多个存储未完成存储器访问请求的队列。队列保持存储器访问的次序或排列存储器访问以优化存储器的带宽。举例来说,如果线路0同线路1不相关或没有关系,没有理由线路1和线路0不能混乱地完成其SRAM单元的存储器访问。微引擎22a-22f对存储控制器26a和26b发出存储器访问的请求。微引擎22a-22f用足够的存储器访问操作将存储器子***26a和26b溢出,使存储器子***26a和26b成为处理器12操作的瓶颈。
如果存储器子***16被在性质上独立的存储器请求溢出,则处理器12能完成存储器访问分类。存储器访问分类提高了可达到的存储器带宽。存储器访问分类,如下所述,减少了停滞时间或访问SRAM时发生的磁泡。有了对SRAM的存储器访问,读写操作之间的信号线上的转换电流的方向产生了磁泡或等待电流在连接SRAM16b和SRAM控制器26b的导体上稳定的停滞时间。
也就是说,驱动总线上电流的驱动器需要在改变状态前稳定下来。从而,读操作后跟写操作的重复循环能降低带宽的峰值。存储器访问分类允许处理器12组织引导以进行这样的存储,使长串的读操作之后可跟长串的写操作。这种做法可被用来最小化流水线中的停滞时间以有效地取得更接近于可供应的最大带宽。引导分类帮助维持并行硬件关联线路。
SDRAM存储器访问分类允许隐藏从一个存储单元到另一个存储单元的预先充电。特别地,如果SDRAM存储器***16a被编组成一个奇数存储单元和一个偶数存储单元,在处理器在奇数存储单元上操作的同时,存储控制器26a能开始对偶数存储单元进行预先充电。如果存储器访问在奇数存储单元和偶数存储单元之间交替,则预先充电是可行的。通过排序存储器访问交替访问相对的存储单元,处理器12最大限度地利用了SDRAM带宽。另外,可使用其它的优化。比如说,操作可被合并且在存储器访问前被合并的合并优化,打开了通过检查地址已打开的存储器页面不能重新打开的页面优化和如以下所述的存储器链锁,以及可使用刷新机器。
FBUS接口28同服务被批准时指示的中断标志一起,支持MAC设备所支持的每一个口的传送和接收标志。FBUS接口28还包括完成将要从FBUS 18到来的数据包的表头操作处理的控制器28a。控制器28a抽取数据包的表头并在SRAM中完成微程序控制的资源/目标地址/协议的散列查找(用于地址修正)。如果散列不能成功解决,就将数据包表头送至处理器核心20进行附加的处理。FBUS接口28支持以下的内部数据处理:
FBUS单元 (共享的总线SRAM) 去至/来自微引擎
FBUS单元 (通过专用总线) 从SDRAM单元写操作
FBUS单元 (通过M总线) 读至SDRAM
FBUS18是标准工业总线,包括数据总线(比如64位宽)和地址的边频带控制以及读/写控制。FBUS接口28具备了使用一系列输入和输出FIFO的29a-29b来输入大量数据的能力。通过FIFO 29a-29b,微引擎22a-22f从SDRAM控制器26a提取数据或命令SDRAM控制器26a将数据,从其中的数据来自总线18上设备的接收FIFO,送入FBUS接口28。数据可通过存储控制器26a以直接存储器存取的方式被送至SDRAM存储器16a。类似地,微引擎能将数据从SDRAM 26a移至接口28,通过FUBS接口28输出至FBUS 18。
数据功能在微引擎中分配。通过指令请求与SRAM 26a、SDRAM26b和FUBS28连接。指令请求可以是存储器请求或FBUS请求。举例来说,指令请求能够将数据从位于微引擎22a中的寄存器移至共享资源,比如SDRAM区、SRAM区、瞬时存储器或某些MAC地址。指令被送出至每个功能性单元和共享资源。然而,共享资源不需要维持局部的数据缓冲。相反,共享资源可对位于微引擎内的分配数据进行存取。这样做使微引擎22a-22f具有对局部数据的访问,而不是对总线上访问和对总线争用的风险的判优。具有这样的特征,有0周期停止用于等待微引擎22a-22f内部的数据。
数据总线,比如说ASB总线30、SRAM总线34和与这些共享资源——比如存储控制器26a和26b——相结合的SDRAM总线38,有充足的带宽,于是不存在内部瓶颈。因而,为了阻止瓶颈,处理器12对带宽有要求,其中,每一个功能性单元配备至少内部总线最大带宽两倍的带宽。作为例子,SDRAM能在83MHz运行64位宽的总线。SRAM数据总线可具有分离的读操作总线和写操作总线,例如,可以是在166MHz运行的32位宽的读操作总线和在166MHz运行的32位宽的写操作总线。实质上,那就是有效地为SDRAM带宽两倍的在166MHz运行的64位。
核心处理器20还能够访问共享资源。核心处理器20具有SDRAM控制器26a到总线接口24再通过总线32到SRAM控制器26b的直接通信。然而,为了访问微引擎22a-22f并转移位于任何微引擎22a-22f的寄存器,核心处理器20通过总线34之上的ASB译码器30访问微引擎22a-22f。ASB译码器30在物理上可属于FBUS接口28内,但在逻辑上是截然不同的。ASB译码器30完成FUBS微引擎转移寄存器位置同核心处理器(即,ASB总线)地址之间的地址译码,这样一来,核心处理器20可访问属于微引擎22a-22f的寄存器。
参考图3,显示了微引擎22a-22f的一个典型的例子,比如微引擎22f。微引擎包括控制存储器70,其在实施中,在这里包括32位的1024个字的RAM。RAM存储微程序。微程序可被核心处理器20装载。微引擎22f同样包括控制器逻辑72。控制器逻辑包括指令解码器73和程序计数器(PC)单元72a-72d。四个微程序计数器72a-72d保留在硬件中。微引擎22f还包括关联事件转换逻辑74。关联事件逻辑74从每一个共享资源,例如SRAM 26a、SDRAM 26b或处理器核心20、控制寄存器和状态寄存器等等,接收信息(例如,SEQ_#EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_RESPONSE;和ASB_EVENT_RESPONSE)。这些信息提供了请求的功能是否已完成的信息。基于线路请求的功能是否已完成并发出完成的信号,线路需要等待那个完成的信号,而且如果线路可以操作,那么线路被安排在可提供的线路列表中(未显示)。微引擎22f能够具有的线路最大值,举例来说,4条线路。
除了执行线路本地化的事件信号外,微引擎22使用全球化的状态信号指示。有了状态信号指示,执行线路可将信号状态传播给所有的微引擎22。接收现有请求的信号,以及任何和所有微引擎中的线路可在这些状态信号指示上转移。这些状态信号指示可用于检测资源的有效性或资源是否应该用来服务。
关联事件逻辑74对四(4)条线路具有判优性。在实施例中,判优是循环装置。可使用其它包括优先队列或加权公平队列的技术。微引擎22f还包括执行盒(EBOX)数据通道76,其包括算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a完成算术和逻辑功能以及转换功能。寄存器组76b具有相对大数目的通用寄存器。在该实施中,在第一存储单元——存储单元A中有64个通用寄存器,在第二存储单元——存储单元B中有64个通用寄存器。通用寄存器如将要描述的,被开了视窗,使得它们可以相对寻址和绝对寻址。
微引擎22f还包括写转移寄存器栈78和读转移寄存器栈80。这些寄存器也同样被开了视窗,使得它们能相对寻址和绝对寻址。写转移寄存器栈78,写入资源的数据位于其中。类似地,读寄存器栈80中位于从共享资源返回的数据。在数据到来之后或与数据同时到来的来自共享资源(例如:SRAM控制器26a、SDRAM控制器26b或核心处理器20)的事件信号将被提供给关联事件判优器74,该判优器随后将发出信号给线路,告知数据有效或以发送。传送寄存器存储单元78和80都通过数据通道与执行盒76(EBOX)相连。在实施中,读转移寄存器有64个寄存器,写转移寄存器有64个寄存器。
参考图4,SDRAM存储控制器26a包括存储器访问队列90,其中,存储器访问请求来自不同的微引擎22a-22f。存储控制器26a包括判优器(服务有优先权的机器)91,该判优器选择下一个给任何功能性单元发出命令的微引擎引导请求。已知一个微引擎正提供引导请求,则引导请求将通过SDRAM控制器26a内部的地址和指令队列90来到。如果引导请求具有“优化的MEM位”组,来到的引导请求将被存入偶数存储单元队列90a或奇数存储单元队列90b。如果存储器访问请求不具有存储器优化位组,缺省的将被归入顺序队列90c。SDRAM控制器26是在FBUS接口28、核心处理器20和PCI接口24中共享的资源。SDRAM控制器26还维持完成读_修改_写原子操作的状态机器。SDRAM控制器26还完成来自SDRAM的数据请求的字节排列。
顺序队列90c维持来自微引擎的引导请求的顺序。有了一系列的奇数和偶数存储单元引导,可请求,只有当奇数存储单元和偶数存储单元的一序列存储器访问都完成时,才返回信号。如果微引擎22f将存储器访问分成奇数存储单元引导和偶数存储单元引导,而且其中一个存储单元,比如说,偶数存储单元在奇数存储单元之前耗尽了存储器访问,但信号被确立在最后一个偶数引导之上,可以想像存储控制器26a会向微引擎返回信号,告知存储器访问已完成,尽管奇数存储单元引导并未进行。这种问题的出现将引起相干性问题。通过提供顺序队列90c来阻止这种情况的发生,该队列允许具有多重存储器访问的微引擎,在未完成的存储器访问中,只有其最后的存储器访问需要完成的信号。
SDRAM控制器26a还包括高优先权队列90d。在高优先权队列90d中,从一个微引擎到来的存储器访问直接进入高优先权的队列并以高于其它队列中的其它存储器访问的优先权操作。所有这些队列,偶数存储单元队列90a、奇数存储单元队列90b、顺序队列90c和高优先权队列在单一的RAM结构内执行,该结构在逻辑上被分隔成四个不同的窗口,每个窗口具有其自己的头指针和尾指针。由于填补操作和消耗操作只是单一的输入和输出,所以它们可被放入相同的RAM结构以提高RAM结构的密度。
SDRAM控制器26a还包括核心总线接口逻辑,即ASB总线92。ASB总线接口逻辑92将核心处理器20同SDRAM控制器26a连接。ASB总线是包括32位数据通道和28位地址通道的总线。数据通过MEM ASB数据设备98,例如缓冲器,存入存储器或从存储器提取。MEM ASB数据设备98是写数据的队列。如果通过ASB接口92有从核心处理器20来的数据,那么数据可被存入MEM ASB设备98并随后通过SDRAM接口110从MEM ASB设备98移至SDRAM存储器16a。虽然未显示,但对于读操作可提供相同的队列结构。SDRAM控制器26a还包括使来自微引擎的数据出栈的引擎97和PCI总线。
附加的队列包括PCI地址队列94和保持一定数目请求的ASB读/写队列96。存储器请求通过多路复用器106被送至SDRAM接口110。多路复用器106通过SDRAM判优器(服务优先权设备)91控制,该判优器检测每个队列的完满性以及请求的状态,并以存储在优先权服务控制寄存器100中可编程的值为基础通过这些检测到的值决定优先权。
一旦对多路复用器106的控制选择了存储器访问请求,存储器访问请求被送至解码器108,在那里被解码并产生地址。解码的地址被送至SDRAM接口110,在那里被分解成访问SDRAM 16a并在传送数据至总线112的数据线26a上写或读数据的行地址选通和列地址选通。在实施中,总线112实际上是代替了单一总线的两根分开的总线。分开的总线包括与分配的微引擎22a-22f相结合的读操作总线以及与分配的微引擎22a-22f相结合的写操作总线。
SDRAM控制器26a的特征是,当存储器访问被存入队列90中时,除了可被置位的优化MEM位以外,还有存储器***位(以下典型的存储器访问指令格式化中的“chain_ref”)。存储器***位,当被置位时,便允许对连续的存储器访问进行特殊的处理。如前面提到的,判优器(服务优先权机器)91控制选择哪个微引擎以在通向队列90的命令总线上提供存储器访问请求(图4)。存储器***位的确立引起判优器(服务优先权机器)91选择先前请求那条总线的功能性单元。
在队列90中将收到连续的存储器访问,此时将存储器***位置位。那些连续的引导通常将被存入顺序队列90c,因为连续的存储器访问是来自单一线路的多重存储器访问。为了提供同步,存储控制器26a当完成时在链接的存储器访问的末尾发出信号。然而,在优化的存储器链接中,(比如,当优化的MEM位与存储器***位都被置位时)存储器访问可进入不同的存储单元并可能在其它存储单元完全消耗掉之前在一个发出信号“完成”的存储单元上完成,这样将会破坏相干性。在这种情况下,存储器***位通过控制器110被用于维持来自当前队列的存储器访问。
由于SDRAM引导能来源于许多源,特别存储单元的下一个SDRAM引导为开放行的可能性很小。链接引导位的SDRAM能用于向控制器26a发出信号,本存储单元保持开放而且下一个SDRAM引导应该取自与现正执行的写操作相同的队列。因此,SDRAM控制器策略总是在写命令之后关闭本行,除非存储器***位被置位。
参考图4A,显示了SDRAM控制器26a中判优策略的流程图。判优策略支持链接的微引擎存储器请求。处理过程115从检查链接的微引擎存储器访问请求115a开始。处理过程115在链接的请求处停留,直到存储器***位被清零。处理过程判定ASB总线请求115b,随后是PCI总线115c、高优先权队列服务115d,相对存储单元请求115e、顺序队列请求115f和相同存储单元请求115g。链接的请求被完全完成,而服务115b-115d则是循环地进行。只有当服务115b-115d完全消耗掉时,过程才处理服务115e-115g。当前面的SDRAM存储器请求具有存储器***位时,链接的微引擎存储器访问请求被置位。当存储器***位被置位后,判优器(服务优先权机器)91只再一次服务相同的队列,直到存储器***位被清零。由于在ASB处于等待状态时强加在Strongarm核心上严重的性能损失,所以ASB的优先权高于PCI。又由于PCI等待时间的要求,PCI具有高于微引擎的优先权。但是与其它总线一起的话,判别优先权就不一样了。
存储器***位还能用于,当指令线路试图从不同的存储位置完成对字节连续排列的读操作。例如,读取排列的字节能用于向传送FIFO装载数据。读取排列的字节用于形成四倍字长排列的64字节传送FIFO引入线。SDRAM中的引入线可以不是四倍字长排列。SDRAM控制器读取第一存储位置并变换读取内容的N个字节以排列第一字节。SDRAM控制器读取第二位置并连接来自第二存储位置的(8-N)个字节以形成第一条64位的传送FIFO引入线。剩余的从第二存储位置读取的N个字节被变换并与第三位置的第一个(8-N)的字节结合以形成第二条64位的传送FIFO引入线。来自第三位置的剩余的N个字节与来自第四位置的第一个(8-N)的字节结合以产生第三条排列字节的传送FIFO引入线,以此类推。
如果对下一个为相同传送FIFO引入线指定的存储器访问有新的存储指令,则存储器***位的确立能够连接随后存储器读取指令的第一存储位置与前面的SDRAM读取指令的剩余字节。
判优器(服务优先权机器)91起动从六引擎到FBUS、SRAM、PCI和SDRAM控制器的指令引导。当存储器***位被置位的SDRAM指令从微引擎送出时,判优器(服务优先权机器)91将只允许来自相同微引擎的SDRAM请求,直到不带存储器***位的指令被送至结束链接序列的SDRAM控制器。
以下显示了存储器访问指令典型的格式化,该存储器访问指令显示作为可选标记称为“chain_ref”的存储器链接位的实施:
sdram[sdram_cmd,$$sdram_xfer_reg,source_op1,
source_op2,ref_count],optional_token
sdram_cmd字段规定了在SDRAM 16a上完成的操作,包括从SDRAM到SDRAM转移寄存器的读操作,从SDRAM转移寄存器到SDRAM 16a的写操作或从接收FIF029a(图2)到SDRAM 16a的读操作和从SDRAM 16a到传送FIFO 29b(图2)的写操作。
$$sdram_xfer_reg字段规定了在读操作或写操作上分别接收或提供SDRAM数据的连续系列注册表开头的寄存器。
source_op1/source_op2字段规定了内容相关的寄存器或5位由零组成的范围从+31到0的直接数据。这些操作数被一起添加以形成SDRAM地址。
ref_count字段规定了被引导的连续的SDRAM四倍字长的数目。
存储器访问指令同样有能具有几种状态的可选择标记字段,包括:
sig_done当引导完成时,发出相应的使存储数据起源或下沉的微引擎/线路组的信号。不跟ctx_swap或defer一起使用。
ctx_swap当发出存储器访问的命令时,该标记使微引擎换出当前执行的线路以让另一条线路执行。不跟chain_ref和sig_donge一起使用。
chain_ref存储器链接位引起存储控制器在以上所讨论的当前引导之后迅速处理来自该微引擎/线路组的下一个SDRAM引导。通常,该标记不跟ctx_swap或defer一起使用。一旦存储链接引导被启动,微引擎/线路组就不再执行转移指令直到链接完成。
defer跟ctx_swap选项一起使用。规定,在该引导之后在内容被交换之前将执行一条指令。不跟chain_ref或sig_done一起使用。
ordered将SDRAM存储器访问排入顺序队列90c。顺序队列90c保存使用顺序选择标记的引导执行的顺序。不跟optimize_mem或priority一起使用。如果既没有规定priority又没有规定optimize_mem,则***设定值为顺序的。
priority将SDRAM引导排入优先权队列90d中。优先权队列90d赋予该存储器访问高于其它SDRAM引导的优先权。不跟ordered或optimize_mem一起使用。
optimize_mem通过自动将SDRAM引导排入奇数或偶数对列90a或90b对存储器带宽进行优化。奇数或偶数队列90a或90b根据地址引导数据在奇数SDRAM存储单元还是在偶数SDRAM存储单元来选择。这样作可能会导致引导执行的顺序不同于它们在所发出指令中的顺序。不跟ordered或priority一起使用。
indirect_ref表示,过载负荷的限定符或附加的限定符与该引导有联系。这些限定符通过ALU 76在先前的微字中输出。限定符的格式取决于SDRAM的指令。
其它实施例
可以理解的是,虽然对本发明与其详细的描述相结合作了描述,但前面的描述旨在描绘本发明但并不是限定本发明的范围,本发明的范围由所附权利要求的范围决定。其它的方面、优势以及修改在以下的权利要求的范围内。
Claims (18)
1.一种随机存取存储器的控制器,其特征在于包含:
控制逻辑,包括检测未完成的存储器访问的状态以从多个存储器访问队列中的一个选择存储器访问的判优器,所述的控制逻辑当装置允许对连续存储器访问进行特殊处理时响应存储器***位
其中,判优器具有这样的判优策略,即服务链接发出请求直到存储器***位被清零为止。
2.权利要求1的控制器,其特征在于,使用来自具有存储器***位被置位的编码线路的连续存储器访问,以从不连续的存储缓冲器形成字节连续排列的读操作模块。
3.权利要求1的控制器,其特征在于,使用来自具有存储器***位被置位的编码线路的连续存储器访问,以当连续数据写操作在相同SDRAM页进行时对性能进行优化。
4.权利要求1的控制器,其特征在于,存储器***位的确立引起判优器对先前请求的对存储器***访问的功能性单元进行选择。
5.权利要求1的控制器,其特征在于,还包含:
从多个微控制功能性单元获取存储器访问的地址和指令队列;
从计算机总线获取存储器访问的第一读/写队列;
从核心处理器获取存储器访问的第二读/写队列;其中,地址和指令队列包含:
从高优先权任务获取存储器访问的高优先权队列。
6.权利要求5的控制器,其特征在于,控制逻辑响应优化的存储位和存储器***位,其中,存储器***位的确立引起判优器维持来自当前队列的存储器访问。
7.权利要求1的控制器,其特征在于,判优器具有有利于链接的微引擎存储器访问的判优策略。
8.权利要求1的控制器,其特征在于,判优器具有这样的判优策略,即通过检查链接的微引擎存储器访问的请求来启动。
9.权利要求1的控制器,其特征在于,判优策略使链接的存储请求得到完整地服务。
10.权利要求5的控制器,其特征在于,当存储器***位被置位时,判优器继续服务于来自相同队列的存储请求,直到存储器***位被清零。
11.一种并行的以硬件为基础的多线路处理器,其特征在于包含:
与***功能协调的通用处理器;
支持多重硬件线路的多个微引擎;
随机存取存储器的控制器,其包含:
控制逻辑,其包括检测未完成的存储器访问的状态以从多个存储器访问队列中的一个选择存储器访问的判优器,所述的控制逻辑当装置允许对连续存储器访问进行特殊处理时响应存储器***位
其中,判优器具有这样的判优策略,即服务链接发出请求直到存储器***位被清零为止。
12.权利要求11的处理器,其特征在于,控制器引起来自具有存储器***位被置位的编码线路的连续存储器访问从不连续的存储缓冲器形成字节连续排列的读操作模块。
13.权利要求11的处理器,其特征在于,控制器引起来自具有存储器***位被置位的编码线路的连续存储器访问当连续数据写操作在相同SDRAM页进行时对性能进行优化。
14.权利要求11的处理器,其特征在于,存储器***位的确立引起判优器对先前请求的对存储器***进行访问的功能性单元进行选择。
15.一种控制对共享存储器的访问的方法,其特征在于包含:
确定存储器***位是否被确立;
从多个以功能性单元为基础的存储器访问队列中的一个选择存储器访问,该功能性单元对存储器***位进行确立并如先前请求的对存储器***进行访问
其中,判优器具有这样的判优策略,即服务链接发出请求直到存储器***位被清零为止。
16.权利要求15的方法,其特征在于,选择使链接的微引擎存储器访问比其它类型的存储器访问请求有利。
17.权利要求16的方法,其特征在于,选择为链接的请求服务,直到存储器***位被清零。
18.权利要求16的方法,其特征在于,选择通过检查链接的微引擎存储器访问请求来启动。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/473,112 | 1999-12-28 | ||
US09/473,112 US6560667B1 (en) | 1999-12-28 | 1999-12-28 | Handling contiguous memory references in a multi-queue system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1437730A CN1437730A (zh) | 2003-08-20 |
CN1238793C true CN1238793C (zh) | 2006-01-25 |
Family
ID=23878258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008191816A Expired - Fee Related CN1238793C (zh) | 1999-12-28 | 2000-12-06 | 分布式存储器控制和带宽优化 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6560667B1 (zh) |
EP (1) | EP1282862B1 (zh) |
CN (1) | CN1238793C (zh) |
AT (1) | ATE464604T1 (zh) |
AU (1) | AU5788001A (zh) |
DE (1) | DE60044209D1 (zh) |
HK (1) | HK1051241A1 (zh) |
TW (1) | TWI229259B (zh) |
WO (1) | WO2001048619A2 (zh) |
Families Citing this family (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US6668317B1 (en) * | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine for parallel processor architecture |
US6427196B1 (en) * | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6625654B1 (en) * | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US6631462B1 (en) * | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
US7853778B2 (en) | 2001-12-20 | 2010-12-14 | Intel Corporation | Load/move and duplicate instructions for a processor |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US6973550B2 (en) * | 2002-10-02 | 2005-12-06 | Intel Corporation | Memory access control |
US7769097B2 (en) | 2003-09-15 | 2010-08-03 | Intel Corporation | Methods and apparatus to control transmission of a multicarrier wireless communication channel through multiple antennas |
US20050198361A1 (en) * | 2003-12-29 | 2005-09-08 | Chandra Prashant R. | Method and apparatus for meeting a given content throughput using at least one memory channel |
US7213099B2 (en) * | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
US20050204111A1 (en) * | 2004-03-10 | 2005-09-15 | Rohit Natarajan | Command scheduling for dual-data-rate two (DDR2) memory devices |
US7418540B2 (en) * | 2004-04-28 | 2008-08-26 | Intel Corporation | Memory controller with command queue look-ahead |
US7162567B2 (en) * | 2004-05-14 | 2007-01-09 | Micron Technology, Inc. | Memory hub and method for memory sequencing |
US7277990B2 (en) | 2004-09-30 | 2007-10-02 | Sanjeev Jain | Method and apparatus providing efficient queue descriptor memory access |
US20060067348A1 (en) * | 2004-09-30 | 2006-03-30 | Sanjeev Jain | System and method for efficient memory access of queue control data structures |
US20060129764A1 (en) * | 2004-12-09 | 2006-06-15 | International Business Machines Corporation | Methods and apparatus for storing a command |
US7555630B2 (en) * | 2004-12-21 | 2009-06-30 | Intel Corporation | Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit |
US7418543B2 (en) | 2004-12-21 | 2008-08-26 | Intel Corporation | Processor having content addressable memory with command ordering |
US20060140203A1 (en) * | 2004-12-28 | 2006-06-29 | Sanjeev Jain | System and method for packet queuing |
US7467256B2 (en) * | 2004-12-28 | 2008-12-16 | Intel Corporation | Processor having content addressable memory for block-based queue structures |
US20060236011A1 (en) * | 2005-04-15 | 2006-10-19 | Charles Narad | Ring management |
CN100346285C (zh) * | 2006-01-06 | 2007-10-31 | 华为技术有限公司 | 处理器芯片与存储控制***及方法 |
US20070245074A1 (en) * | 2006-03-30 | 2007-10-18 | Rosenbluth Mark B | Ring with on-chip buffer for efficient message passing |
US7926013B2 (en) * | 2007-12-31 | 2011-04-12 | Intel Corporation | Validating continuous signal phase matching in high-speed nets routed as differential pairs |
CN101625625B (zh) * | 2008-07-11 | 2011-11-30 | 鸿富锦精密工业(深圳)有限公司 | 信号中继装置及利用该装置访问外部存储器的方法 |
JP2010033125A (ja) * | 2008-07-25 | 2010-02-12 | Hitachi Ltd | ストレージ装置及びデータ転送方法 |
GB2495959A (en) * | 2011-10-26 | 2013-05-01 | Imagination Tech Ltd | Multi-threaded memory access processor |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS556667A (en) * | 1978-06-30 | 1980-01-18 | Fujitsu Ltd | Data transfer system with buffer register |
US5046000A (en) * | 1989-01-27 | 1991-09-03 | International Business Machines Corporation | Single-FIFO high speed combining switch |
US5448702A (en) * | 1993-03-02 | 1995-09-05 | International Business Machines Corporation | Adapters with descriptor queue management capability |
US5598568A (en) * | 1993-05-06 | 1997-01-28 | Mercury Computer Systems, Inc. | Multicomputer memory access architecture |
US5784712A (en) * | 1995-03-01 | 1998-07-21 | Unisys Corporation | Method and apparatus for locally generating addressing information for a memory access |
US5940612A (en) * | 1995-09-27 | 1999-08-17 | International Business Machines Corporation | System and method for queuing of tasks in a multiprocessing system |
US5940866A (en) * | 1995-12-13 | 1999-08-17 | International Business Machines Corporation | Information handling system having a local address queue for local storage of command blocks transferred from a host processing side |
US5699537A (en) * | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US6201807B1 (en) * | 1996-02-27 | 2001-03-13 | Lucent Technologies | Real-time hardware method and apparatus for reducing queue processing |
KR100219597B1 (ko) * | 1996-03-30 | 1999-09-01 | 윤종용 | 씨디-롬 드라이브에서의 큐잉 제어 방법 |
US5905876A (en) * | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US6085294A (en) * | 1997-10-24 | 2000-07-04 | Compaq Computer Corporation | Distributed data dependency stall mechanism |
US6092127A (en) * | 1998-05-15 | 2000-07-18 | Hewlett-Packard Company | Dynamic allocation and reallocation of buffers in links of chained DMA operations by receiving notification of buffer full and maintaining a queue of buffers available |
US6160562A (en) * | 1998-08-18 | 2000-12-12 | Compaq Computer Corporation | System and method for aligning an initial cache line of data read from local memory by an input/output device |
-
1999
- 1999-12-28 US US09/473,112 patent/US6560667B1/en not_active Expired - Lifetime
-
2000
- 2000-12-06 DE DE60044209T patent/DE60044209D1/de not_active Expired - Lifetime
- 2000-12-06 WO PCT/US2000/042663 patent/WO2001048619A2/en active Application Filing
- 2000-12-06 AT AT00993654T patent/ATE464604T1/de not_active IP Right Cessation
- 2000-12-06 EP EP00993654A patent/EP1282862B1/en not_active Expired - Lifetime
- 2000-12-06 CN CNB008191816A patent/CN1238793C/zh not_active Expired - Fee Related
- 2000-12-06 AU AU57880/01A patent/AU5788001A/en not_active Abandoned
- 2000-12-14 TW TW089126745A patent/TWI229259B/zh not_active IP Right Cessation
-
2003
- 2003-05-13 HK HK03103312.2A patent/HK1051241A1/xx not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
US6560667B1 (en) | 2003-05-06 |
WO2001048619A3 (en) | 2002-11-14 |
DE60044209D1 (de) | 2010-05-27 |
EP1282862B1 (en) | 2010-04-14 |
TWI229259B (en) | 2005-03-11 |
HK1051241A1 (en) | 2003-07-25 |
ATE464604T1 (de) | 2010-04-15 |
AU5788001A (en) | 2001-07-09 |
EP1282862A2 (en) | 2003-02-12 |
CN1437730A (zh) | 2003-08-20 |
WO2001048619A2 (en) | 2001-07-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1238793C (zh) | 分布式存储器控制和带宽优化 | |
CN100351781C (zh) | 多线程并行处理器结构中所用的微引擎的存储器引用指令 | |
USRE41849E1 (en) | Parallel multi-threaded processing | |
US6629237B2 (en) | Solving parallel problems employing hardware multi-threading in a parallel processing environment | |
US7991983B2 (en) | Register set used in multithreaded parallel processor architecture | |
US6668317B1 (en) | Microengine for parallel processor architecture | |
US6606704B1 (en) | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode | |
CA2388740C (en) | Sdram controller for parallel processor architecture | |
US7305500B2 (en) | Sram controller for parallel processor architecture including a read queue and an order queue for handling requests | |
US20020056037A1 (en) | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set | |
US7418540B2 (en) | Memory controller with command queue look-ahead | |
US8902915B2 (en) | Dataport and methods thereof | |
US7191309B1 (en) | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060125 Termination date: 20121206 |