CN1192314C - 并行处理器结构的sram控制器 - Google Patents

并行处理器结构的sram控制器 Download PDF

Info

Publication number
CN1192314C
CN1192314C CNB00815256XA CN00815256A CN1192314C CN 1192314 C CN1192314 C CN 1192314C CN B00815256X A CNB00815256X A CN B00815256XA CN 00815256 A CN00815256 A CN 00815256A CN 1192314 C CN1192314 C CN 1192314C
Authority
CN
China
Prior art keywords
memory
controller
address
module
memory reference
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
Application number
CNB00815256XA
Other languages
English (en)
Other versions
CN1399739A (zh
Inventor
M·J·阿迪莱塔
W·维勒
J·莱德菲尔德
D·卡特
G·沃尔里奇
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of CN1399739A publication Critical patent/CN1399739A/zh
Application granted granted Critical
Publication of CN1192314C publication Critical patent/CN1192314C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing

Abstract

随机存取存储器的一种控制器包括一个地址与命令队列模块,该地址与命令队列模块保存来自多个微控制功能单元的存储器引用。地址与命令队列模块包括存储读存储器引用的一个读队列模块。控制器还包括保存来自核心处理器的存储器引用的第一个读/写队列模块和包含一个仲裁器的控制逻辑模块,该仲裁器检测每个队列的充满度和未完成的存储器引用的完成状态,以便从其中的一个队列模块中选择一个存储器引用。

Description

并行处理器结构的SRAM控制器
技术领域
本发明涉及尤其用于并行处理系统中的存储器控制器。
背景技术
并行处理是计算过程中并发事件信息处理的一种有效的形式。与串行处理对比而言,并行处理请求并发执行计算机中的许多程序。在使用并行处理器的关联文本(context)下,并行性涉及同时做不只一件事。不同于可在一个单一的站顺序执行所有任务的串行范例和在专用站利用并行处理执行任务的流水线程机器,可提供多个站,每个站都能够执行所有的任务。也就是说,一般而言,所有或多个站同时独立地处理问题的相同或共同的元素。某些问题适合于通过应用并行处理来解决。
并行处理任务中所用的存储器系统会效率很低。存储器系统会具有停滞时间(即可以是1个或2个周期的泡影(bubble),这取决于所使用的存储设备的类型)。
发明内容
根据本发明的一个方面,随机存取存储器的控制器包括一个地址与命令队列模块,该队列模块保存了来自多个微控制功能单元的存储器引用(reference)。地址与命令队列模块包括一个读队列模块和保存来自核心处理器的存储器引用的第一个读/写队列模块。控制器还包括控制逻辑模块,控制逻辑模块包括的仲裁器检测每个队列的充满度和未完成的(outstanding)存储器引用的完成状态,以便从其中的一个队列模块中选择存储器引用指令。
本发明的一个或多个方面可提供以下的一个或多个优点。
存储器控制器执行存储器引用排序(sorting),以便使从接口到存储器的流水线程中的延迟(泡影)最小化。存储器系统被设计成本质上可被独立的存储器请求所充满。存储器控制器可以进行存储器引用排序,这可减少发生于访问SRAM的停滞时间或泡影。对于SRAM的存储器引用,在读与写之间切换信号线上的电流方向,当等候电流在将SRAM耦合到SRAM控制器的导体上达到稳定的同时,可产生泡影或停滞时间。也就是说,驱动总线上的电流的驱动器需要在改变状态之前达到稳定。读操作后跟写的重复周期会降低峰值带宽。存储器引用排序组织对存储的引用,以便长字符串的读取后可以跟随长字符串的写操作。这可以被用来使流水线程中的停滞时间最小化,以便有效地实现更接近于最大的可用带宽。分组读和写通过取消死周期来改善周期时间。存储器控制器根据读取存储器引用来执行存储器引用排序。
存储器控制器还可包括一个锁定查找设备,用于查找读锁定。地址与命令队列模块还包括一个读锁定失败队列模块,以便如锁定查找设备确定的那样保存由于存储器的一个部分上存在锁定而失败的读取存储器引用请求。
附图概述
图1是使用基于硬件的多线程处理器的一种通讯系统的方框图。
图2是图1中基于硬件的多线程处理器的详细的方框图。
图3是图1和图2的基于硬件的多线程处理器中所用的微引擎的功能单元的方框图。
图3A是图3的微引擎中的一个流水线程的方框图。
图3B表现了关联文本切换指令的一种格式。
图3C是表现通用寄存器地址安排的方框图。
图4是基于硬件的多线程处理器中所用的增强带宽操作的存储器控制器的方框图。
图4A是流程图,表示图4的SDRAM控制器中的仲裁政策。
图4B是定时图,表现了优化SDRAM控制器的优点。
图5是基于硬件的多线程处理器中所用的等待时间受限制操作的存储器控制器的方框图。
图5A是定时图,表现了优化SRAM控制器的优点。
图6是图1的处理器中的一个通讯总线接口的方框图。
结构:
参考图1,通讯系统10包括一个并行的、基于硬件的多线程处理器12。基于硬件的多线程处理器12被耦合到一个总线(例如,PCI总线14)、存储器系统16和第二个总线18。系统10对于可以被分成多个并行子任务或功能的任务而言特别有用。基于硬件的多线程处理器12对于面向带宽(而非面向等待时间)的任务而言特别有用。基于硬件的多线程处理器12具有多个微引擎22,每个微引擎具有可以同时运行和独立执行任务的多个硬件受控线程。
基于硬件的多线程处理器12还包括一个中央控制器20,该中央控制器20帮助装载对基于硬件的多线程处理器12的其他资源的微码控制,并执行其他通用计算机类型功能,例如,处理协议、异常、对数据分组(packet)处理(其中,例如在边界条件下微引擎传递数据分组,以获得更加详细的处理)的额外支持。在一个实施例中,处理器20是一个基于“Strong Arm7”(Arm是英国ARM有限公司的商标)的结构。通用微处理器20拥有一个操作系统。通过该操作系统,处理器20可以调用各种功能来操作微引擎22a-22f。处理器20可以使用任何被支持的操作系统,较佳地是使用实时操作系统。对于作为“StrongArm”结构实现的核心处理器而言,可以使用微软NT实时、VXWorks与μCUS、互联网上可用的免费软件操作系统等各种操作系统。
基于硬件的多线程处理器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根据数据的特征来访问SDRAM 16a或SRAM 16b。这样,低等待时间、低带宽的数据可被存储在SRAM中并从那里被取出,而等待时间对其并不重要的较高带宽数据则被存储在SDRAM中并从那里被取出。微引擎22a-22f可以执行对SDRAM控制器26a或SRAM控制器16b的存储器引用指令。
硬件多线程技术的优点可以由SRAM或SDRAM存储器访问来说明。例如,来自微引擎的由thread_0请求的SRAM访问将使SRAM控制器26b开始对SRAM存储器16b进行访问。SRAM控制器控制SRAM总线的仲裁,访问SRAM 16b,从SRAM 16b取出数据,并将数据返回到提出请求的微引擎22a-22b。在SRAM访问期间,如果微引擎(例如,22a)只有一个单一的线程可操作,则该微引擎将处于休眠状态,直到数据从SRAM被返回。通过使用在每个微引擎22a-22f内的硬件关联文本交换,硬件关联文本交换使具有独特程序计数器的其他关联文本能够在那个相同的微引擎内执行。这样,另一个线程(例如,thread_1)可以运作,而第一个线程(例如,thread_0)正在等待读取数据返回。在执行期间,thread_1可以访问SDRAM存储器16a。thread_1操作SDRAM单元,thread_0正在操作SRAM单元,而一个新的线程(例如,thread_2)现在可以在微引擎22a中进行操作。thread_2可以操作一定数量的时间,直到它需要访问存储器或执行其他某项等待时间长的操作(例如,对总线接口进行访问)。所以,处理器12可以同时拥有都正在由微引擎22a完成或操作的总线操作、SRAM操作和SDRAM操作,并且多拥有一个线程来处理数据路径中的更多工作。
硬件关联文本交换也使各项任务的完成同步化。例如,两个线程可以找到相同的共享资源(例如,SRAM)。这些分开的功能单元(例如,FBUS接口28、SRAM控制器26a和SDRAM控制器26b)在完成来自微引擎线程关联文本之一的所请求的任务时其中的每个功能单元都报告回表示操作完成信号的一个标记。当微引擎接收到标记时,微引擎可以确定打开哪个线程。
应用基于硬件的多线程处理器12的一个例子是作为网络处理器。作为网络处理器,基于硬件的多线程处理器12连接到媒体访问控制器设备(例如,10/100BaseT八进制MAC 13a或吉比特以太网设备13b)等网络设备。一般而言,作为网络处理器,基于硬件的多线程处理器12可以连接到接收/发送大量数据的任何类型的通讯设备或接口。运作于联网应用中的通讯系统10可从设备13a和13b接收多个网络数据分组,并用并行方式来处理那些数据分组。利用基于硬件的多线程处理器12,每个网络数据分组都可以被独立地处理。
使用处理器12的另一个例子是后记(postscript)处理器的打印引擎或作为存储子系统的处理器(即RAID磁盘存储器)。进一步的用途是作为匹配引擎。例如,在证券行业中,电子交易的出现要求使用电子匹配引擎来对买者与卖者之间的定购进行匹配。可以在系统10上完成这些和其他并行类型的任务。
处理器12包括一个总线接口28,该总线接口将处理器耦合到第二个总线18。一个实施例中的总线接口28将处理器12耦合到所谓的FBUS 18(FIFO总线)。FBUS接口28负责控制并将处理器12连接到FBUS 18。FBUS 18是被用来连接到“媒体访问控制器(MAC)”设备的64位宽FIFO总线。
处理器12包括第二个接口(例如,PCI总线接口24),该接口将位于PCI 14总线上的其他系统成分耦合到处理器12。PCI总线接口24将高速数据路径24a提供给存储器16(例如,SDRAM存储器16a)。通过该路径,经由直接存储器访问(DMA)传送,通过PCI总线14,数据可以从SDRAM 16a被迅速移动。基于硬件的多线程处理器12支持图象传送。基于硬件的多线程处理器12可以使用多个DMA通道,所以,如果DMA传送的一个目标很忙,则DMA通道中的另一个通道可接管PCI总线来向另一个目标传递信息,从而维持处理器12的高效率。此外,PCI总线接口24支持目标与主控操作。在目标操作中,总线14上的从属设备通过读、写来访问用作目标操作的从动装置的SDRAMs。在主控操作中,处理器核心20将数据直接发送到PCI接口24,或直接从PCI接口24接收数据。
每个功能单元被耦合到一个或多个内部总线。如下文所述,内部总线是双32位总线(即,一个总线用于读取操作,一个总线用于写操作)。基于硬件的多线程处理器12也被结构成使处理器12中的内部总线的带宽总数超过被耦合到处理器12的外部总线的带宽。处理器12包括一个内部核心处理器总线32(例如,ASB总线(高级系统总线)),该总线将处理器核心20耦合到以下描述的存储器控制器26a、26c和ASB转换器(translator)30。ASB总线是与“Strong Arm”处理器核心并用的所谓AMBA总线的一个子集。处理器12还包括一个专用总线34,该总线将微引擎单元耦合到SRAM控制器26b、ASB转换器30和FBUS接口28。存储器总线38将存储器控制器26a和26b耦合到总线接口24、28和包括用于引导操作的快闪只读存储器(flashrom)16c等的存储器系统16。
参考图2,每个微引擎22a-22f包括一个仲裁器,该仲裁器检查标记,以确定将被操作的可用的线程。来自微引擎22a-22f中的任何微引擎的任何线程可以访问SDRAM控制器26a、SDRAM控制器26b或FBUS接口28。存储器控制器26a和26b都包括多个队列,以存储未完成的存储器引用请求。这些队列或者维持存储器引用的顺序,或者安排存储器引用,以便优化存储器带宽。例如,如果thread_0不从属于thread_1或与thread_1没有关系,则颠倒存储器引用的次序,线程1和0没有理由不能完成它们对SRAM单元的存储器引用。微引擎22a-22f向存储器控制器26a和26b发出存储器引用请求。微引擎22a-22f使存储器子系统26a和26b充满足够的存储器引用操作,使得存储器子系统26a和26b成为处理器12操作的瓶颈。
如果存储器子系统16充满本质上独立的存储器请求,则处理器12可以执行存储器引用排序。存储器引用排序改善了可实现的存储器带宽。如下文所述,存储器引用排序减少了访问SRAM时发生的停滞时间或泡影。对于SRAM的存储器引用,在读与写之间切换信号线上的电流方向产生了等待电流在将SRAM 16b耦合到SRAM控制器26b的导体上达到稳定的泡影或停滞时间。
也就是说,驱动总线上的电流的驱动器需要在变化的状态之前达到稳定。这样,完成读操作后跟写的重复周期会降低峰值带宽。存储器引用排序允许处理器12组织对存储的引用,以便长字符串的读取后面可以跟随长字符串的写操作。这可以被用来使流水线程中的停滞时间减到最小,以便有效地实现更接近于最大的可用带宽。引用排序有助于维持并行硬件关联文本线程。在SDRAM上,引用排序允许隐藏从一个排(bank)到另一个排的预先充电。尤其是,如果存储器系统16b被组织进入一个奇数排和一个偶数排,在处理器正在操作奇数排的同时,则存储器控制器可以开始给偶数排预先充电。如果存储器引用在奇数排与偶数排之间交替改变,则可以进行预先充电。通过命令存储器引用交替改变对相对排的访问,处理器12改善了SDRAM带宽。此外,可使用其他的优化。例如,可以使用合并优化(其中,可被合并的操作在存储器访问之前就被合并)、开页优化(其中,通过检查地址,存储器的已打开页面不被重新打开)、链锁(下文将加以描述)和刷新机制。
FBUS接口28支持MAC设备支持的每个端口的“发送与接收”标记,以及指出服务何时被保证的“中断”标记。FBUS接口28还包括一个控制器28a,该控制器执行来自FBUS 18的进入数据分组的首部(head)处理。控制器28a抽取数据分组的首部,并执行SRAM中的可编微程序的源/目的地/协议散列查找(用于地址平滑)。如果散列没有成功地解决,则数据分组的首部被发送到处理器核心20作额外的处理。FBUS接口28支持以下的内部数据处理:
FBUS单元        (共享的总线SRAM)          到/从微引擎。
FBUS单元        (经由专用总线)          从SDRAM单元写入。
FBUS单元        (经由M总线)             读到SDRAM。
FBUS 18是标准工业总线,包括一个数据总线(例如,对于地址的64位宽和边带控制及读/写控制)。FBUS接口28提供通过使用一系列输入和输出FIFO=s 29a-29b来输入大量数据的能力。从FIFOs 29a-29b中,微引擎22a-22f从其取出数据或命令SDRAM控制器26a将数据从接收FIFO(其中,数据来自总线18上的一个设备)移入FBUS接口28。经由直接存储器访问,数据可以通过存储器控制器26a被发送SDRAM存储器16a。同样,经由FBUS接口28,微引擎可以将数据从SDRAM 26a移到接口28,再移出到FBUS 18。
数据功能在各个微引擎中被分配。与SRAM 26a、SDRAM 26b和FBUS 28的连通性是经由命令请求。命令请求可以是存储器请求或FBUS请求。例如,命令请求可以将数据从位于微引擎22a中的一个寄存器移到一个共享的资源(例如,SDRAM位置、SRAM位置、快闪存储器或某个MAC地址)。这些命令被发送到每个功能单元和共享资源。但是,共享资源不需要维持数据的局部缓冲。而共享资源访问位于微引擎内的分布式数据。这使微引擎22a-22f能够对数据进行局部访问,而不是仲裁总线上的访问和对总线的冒险连接。利用这个特点,可有0周期的停顿用于等候微引擎22a-22f的内部数据。
耦合这些共享资源(例如,存储器控制器26a和26b)的数据总线(例如,ASB总线30、SRAM总线34和SDRAM总线38)具有足够的带宽,以便没有内部瓶颈。这样,为了避免瓶颈,处理器12有一个带宽要求:每个功能单元被提供至少是内部总线的最大带宽两倍的带宽。例如,SDRAM可以按83MHz来运行64位宽的总线。SRAM数据总线可以具有分开的读、写总线(例如,可以是按166MHz运行的32位宽的读总线和按166MHz运行的32位宽的写总线)。本质上,按166MHz运行的64位实际上是SDRAM的带宽的两倍。
核心处理器20也可以访问共享资源。核心处理器20经由总线32与SDRAM控制器26a、总线接口24和SRAM控制器26b具有直接的通讯。但是,为了访问微引擎22a-22f和位于微引擎22a-22f中的任何微引擎处的传送寄存器,核心处理器20经由总线34上的ASB转换器30来访问微引擎22a-22f。ASB转换器30物理上可以位于FBUS接口28中,但逻辑上是截然不同的。ASB转换器30执行FBUS微引擎传送寄存器位置与核心处理器地址(即ASB总线)之间的地址转换,以便核心处理器20能够访问属于微引擎22a-22f的寄存器。
虽然微引擎22如以下所述可以使用寄存器组来交换数据,但是,也提供了便笺式存储器27,以允许微引擎将数据写出到存储器,供其他微引擎来读取。便笺式存储器27被耦合到总线34。
处理器核心20包括以五级流水线程(在一个单周期内对一个操作数或二个操作数执行一个单周期移位)实现的一个RISC核心50,并提供乘法支持和32位管状变换支持。这个RISC核心50是一个标准“Strong Arm7”结构,但是,由于性能的原因,它用五级流水线程来实行。处理器核心20还包括16千字节的指令高速缓冲存储器52、8千字节的数据高速缓冲存储器54和预先提取流缓冲器56。核心处理器20与存储写入和指令提取平行地执行算术运算。核心处理器20经由ARM定义的ASB总线与其他的功能单元接口。ASB总线是32位双向总线32。
微引擎:
参考图3,示出微引擎22a-22f中的一个示范微引擎(例如,微引擎22f)。微引擎包括控制存储器70,在一项实施中,该控制存储器包括32位的1,024字的RAM。RAM存储微程序。微程序可由核心处理器20加载。微引擎22f还包括控制器逻辑72。控制器逻辑包括指令解码器73和程序计数器(PC)单元72a-72d。四个微程序计数器72a-72d被保持在硬件中。微引擎22f还包括关联文本事件切换逻辑74。关联文本事件逻辑74从每个共享资源(例如,SRAM26a、SRAM 26b或处理器核心20、控制与状态寄存器等)接收消息(例如,SEO_#_EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_RESPONSE;以及ASB_EVENT_RESPONSE)。这些消息提供关于是否已经完成被请求的功能的信息。根据由线程请求的功能是否已经完成和发出完成信号,线程需要等候那个完成信号;如果使线程能够操作,则该线程被放置在可用的线程列表(未示出)上。微引擎22f可以具有最多(例如,4个)的可用线程。
除了属于执行线程的本地事件信号以外,微引擎22使用全局信令状态。利用信令状态,执行线程可以将信令状态播送到所有的微引擎22。“接收请求可用”信号、微引擎中的任何和所有的线程可以在这些信令状态上分支转移(branch)。这些信令状态可被用来确定资源的可用性或资源是否应当用于服务。
关联文本事件逻辑74对四(4)个线程进行仲裁。在一个实施例中,该仲裁是一种轮流机制。其他技术也可使用,包括优先级队列或被加权的公平队列。微引擎22f还包括一个执行箱(EBOX)数据路径76,该路径包括一个算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a执行算术与逻辑功能,以及移位功能。寄存器组76b具有相对较多数量的通用寄存器。如图3B中将描述的,在此实施中,第一个排-排A中有64个通用寄存器,第二个排-排B中也有64个。如将所述的那样,通用寄存器被设置为窗口,以便它们可相对地和绝对地寻址。
微引擎22f还包括一个写传送寄存器堆栈78和一个读转移堆栈80。这些寄存器也被设置为窗口,以便它们可相对地和绝对地寻址。写转移寄存器堆栈78是写到一个资源的数据所处的位置。类似的,读寄存器堆栈80用于来自共享资源的返回数据。在数据达到之后或在数据达到的同时,来自各个共享资源(例如,SRAM控制器26a、SDRAM控制器26b或核心处理器20)的一个事件信号将被提供给关联文本事件仲裁器74,然后,该关联文本事件仲裁器将警告线程:数据可用或已经被发送。传送寄存器排78和80通过一个数据路径被连接到执行箱(EBOX)76。在一项实施中,读传送寄存器拥有64个寄存器,写传送寄存器拥有64个寄存器。
如图3A所示,微引擎数据路径(datapath)维持一个5级微流水线程82。这个流水线程包括微指令字的查找82a、寄存器文件地址的格式82b、来自寄存器文件的操作数的读取82c、ALU、移位或比较操作82d,以及将结果写回寄存器82e。通过将一个写回数据旁路提供到ALU/移位器单元内,并且通过假设寄存器被作为寄存器文件(而不是RAM)来实现,微引擎可以执行同时的寄存器文件的读和写,这完全隐藏了写操作。
SDRAM接口26a将信号返回给对读取提出请求的微引擎(指出是否发生有关读请求的一致校验(parity)错误)。微引擎微码负责当微引擎使用任何返回数据时核查SDRAM读取Parity(一致校验)标记。一旦核查标记,如果它被设置,则对它的分支转移动作就将它清除。当使SDRAM能够核查时,只发送Parity标记,SDRAM得到一致校验保护。只有微引擎和PCI单元是被通知有关一致校验错误的请求器(requestors)。所以,如果处理器核心20或FIFO请求一致校验保护,则微引擎协助实现该请求。微引擎22a-22f支持有条件的分支转移。当分支转移决定是正在由前面的微控制指令设置的条件代码的结果时,发生最坏情况的有条件的分支转移等待时间(不包括跳转)。以下的表格1示出等待时间;
                       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
               ------------+----+----+----+----+----+----+----+----+----+
       微存储查找              | n1 | cb | n2 | XX | b1 | b2 | b3 | b4 |
       寄存器地址生成        | | n1 | cb | XX | XX | b1 | b2 | b3 |
       寄存器文件查找        | | | n1 | cb | XX | XX | b1 |b2 |
       ALU/shifter/cc         | | |  | n1 | cb | XX | XX | b1 |
       写回                  | | | m2| | n1 | cb | XX | XX |
其中,nx是预分支转移微字(n1设置cc’s)
      cb是有条件的分支转移
      bx是后分支转移微字
      XX是被中止的微字
如表格1所示,直到周期4才设置n1的条件代码,并可以作出分支转移决定(在这种情况下,这使分支转移路径在周期5中被查找)。微引擎导致2个周期的分支转移等待时间惩罚,因为在分支转移路径开始用操作b1填充流水线程之前,它必须中止操作n2和n3(直接在分支转移后的2个微字)。如果没有采用分支转移,则不中止微字,继续正常地执行。微引擎有几种机制来减少或取消有效的分支转移等待时间。
微引擎支持被延期的分支转移。当微引擎允许分支转移出现后并在分支转移生效之前有1或2个微字时,使分支转移延期(即,分支转移的效果在时间上被“延期”)。这样,如果发现有用的工作可以填充分支转移微字之后被浪费的周期,则可以隐藏分支转移等待时间。以下示出1周期的被延期分支转移,其中,允许n2在cb之后但在b1之前执行:
                           | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
               -------------------+----+----+----+----+----+----+----+----+
        微存储查找               | n1 | cb | n2 | XX | b1 | b2 | b3 | b4 |
        寄存器地址生成       |   | n1 | cb | n2 | XX | b1 | b2 | b3 |
        寄存器文件查找       |   | | n1 | cb | n2 | XX | b1 | b2 |
        ALU/shifter/cc       |    |  |  | n1 | cb | n2 | XX | b1 |
        写回                |  |  |  |  | n1 | cb | n2 | XX |
以下示出2周期的延期分支转移,其中,允许n2和n3在到b1的分支转移发生之前完成。注意,当条件代码被设置在分支转移前的微字上时,只允许2周期的分支转移延期。
                        | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
          ----------------+----+----+----+----+----+----+----+----+----+
    微存储查找             | n1 | cb | n2 | n3 | b1 | b2 | b3 | b4 | b5 |
    寄存器地址生成      |  | n1 | cb | n2 | n3 | b1 | b2 | b3 | b4 |
    寄存器文件查找     |  |  | n1 | cb | n2 | n3 | b1 | b2 | b3 |
    ALU/shifter/cc       |  |  |  | n1 | cb | n2 | n3 | b1 |b2 |
    写回               |  |   |  |  | n1 | cb | n2 | n3 | b1 |
微引擎也支持条件代码评估。如果条件代码(根据它们作出分支转移决定)在分支转移前被设置2个或更多的微字,则1周期的分支转移等待时间可以被取消,因为可以提早1周期来作出分支转移决定:
                | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
           -------------+----+----+----+----+----+----+----+----+
    微存储查找             | n1 | n2 | cb | XX | b1 | b2 | b3 | b4 |
    寄存器地址生成      |  | n1 | n2 | cb | XX | b1 | b2 | b3 |
    寄存器文件查找      |  |  | n1 | n2 | cb | XX | b1 | b2 |
    ALU/shifter/cc       |  |  |   | n1 | n2 | cb | XX | b1 |
    写回                | |  |  |  | n1 | n2 | cb | XX |
在这个例子中,n1设置条件代码,n2没有设置条件代码。所以,可以在周期4(而不是5)作出分支转移决定,以便取消1周期的分支转移等待时间。在以下的例子中,1周期的分支转移延期和条件代码的早期设置被结合起来完全地隐藏分支转移等待时间:
条件代码(cc’s)在1周期的延期分支转移之前设置2个周期:
                       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8|
             ---------------+----+----+----+----+----+----+----+----+
       微存储查找             | n1 | n2 | cb | n3 | b1 | b2 | b3 | b4 |
       寄存器地址生成      |  | n1 | n2 | cb | n3 | b1 | b2 | b3 |
       寄存器文件查找      |  |  | n1 | n2 | cb | n3 | b1 | b2 |
       ALU/shifter/cc      |  |   |   | n1 | n2 | cb | n3 |b1 |
       写回              |  |  |  |   | n1 | n2 | cb | n3 |
在无法较早设置条件代码(即,它们被设置在分支转移前的微字中)的情况下,微引擎支持分支转移推测,以尝试减少保留的1个周期的显露的分支转移等待时间。通过“推测”分支转移路径或顺序路径,微排序器在明确知道执行什么路径之前1个周期预先取出被推测的路径。如果它推测正确,则如下所示,消除了1个周期的分支转移等待时间:
推测所采用的分支转移/采用分支转移
                            | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
            ------------------+----+----+----+----+----+----+----+----+
       微存储查找            | n1 | cb | n1 | b1 | b2 | b3 | b4 | b5 |
       寄存器地址生成      | | n1 | cb | XX | b1 | b2 | b3 | b4|
       寄存器文件查找      | | | n1 | cb | XX | b1 | b2 | b3 |
       ALU/shifter/cc       | |  |  | n1 | cb | XX | b1 | b2 |
       写回                | | |  |  | n1 | cb | XX | b1 |
如果微码对所采用的分支转移的推测不正确,则微引擎仍然只浪费1个周期:
推测所采用的分支转移/不采用分支转移
                             | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8|
              --------------+----+----+----+----+----+----+----+----+
       微存储查找             | n1 | cb | n1 | XX | n2 | n3 | n4 | n5 |
       寄存器地址生成        | | n1 | cb | n1 | XX | n2 | n3 | n4 |
       寄存器文件查找         | | | n1 | cb | n1 | XX | n2 | n3 |
       ALU/shifter/cc          | | | | n1 | cb | n1 | XX | n2 |
       写回                   | | | | | n1 | cb | n1 | XX |
但是,当微码推测不采用分支转移时,等待时间惩罚有不同的分布:
关于推测不被采用的分支转移/不采用分支转移,以下没有列出浪费的周期。
                       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
          -----------------+----+----+----+----+----+----+----+----+
     微存储查找             | n1 | cb | n1 | n2 | n3 | n4 | n5 | n6 |
     寄存器地址生成       | | n1 | cb | n1 | n2 | n3 | n4 | n5 |
     寄存器文件查找       | | | n1 | cb | n1 | n2 | n1 | b4 |
     ALU/shifter/cc        | |  | | n1 | cb | n1 | n2 | n3 |
     写回                 | | | | | n1 | cb | n1 | n2 |
但是,关于推测不被采用的分支转移/采用分支转移,有2个浪费的周期。
                        | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
        ------------------+----+----+----+----+----+----+----+----+
      微存储查找           | n1 | cb | n1 | XX | b1 | b2 | b3 | b4 |
      寄存器地址生成     | | n1 | cb | XX | XX | b1 | b2 | b3 |
      寄存器文件查找     | |  | n1 | cb | XX | XX |b1 | b2 |
      ALU/shifter/cc      | |  |   | n1 | cb | XX | XX |b1 |
      写回               | | |  |  | n1 | cb | XX | XX |
微引擎可以将分支转移推测与1个周期的分支转移延期结合起来,以便进一步改善结果。关于推测所采用的具有1周期延期分支转移的分支转移/采用分支转移,是:
                        | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
         ----------------+----+----+----+----+----+----+----+----+
      微存储查找           | n1 | cb | n2 | b1 | b2 | b3 | b4 | b5 |
      寄存器地址生成     | | n1 | cb | n2 | b1 | b2 | b3 | b4 |
      寄存器文件查找     | | | n1 | cb | n2 | b1 | b2 | b3 |
      ALU/shifter/cc      | | | | n1 | cb | n2 | b1 | b2 |
      写回               | | | | | n1 | cb | n2 | b1 |
在以上的情况下,通过正确地推测分支转移方向,2个周期的分支转移等待时间被n2的执行所隐藏。如果微码推测得不正确,则1个周期的分支转移等待时间如以下所示保持显露:
推测所采用的具有1个周期被延期的分支转移/不采用分支转移
                         |1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
         -------------------+----+----+----+----+----+----+----+----+----+
      微存储查找               | n1 | cb | n2 | XX | n3 | n4 | n5 | n6 | n7 |
      寄存器地址生成         | | n1 | cb | n2 | XX | n3 | n4 | n5 | n6 |
      寄存器文件查找        | | | n1 | cb | n2 | XX | n3 | n4 | n5 |
      ALU/shifter/cc         | | | | n1 | cb | n2 | XX | n3 | n4 |
      写回                  | | | | | n1 | cb | n2 | XX | n3 |
如果微码正确地推测不被采用,那么,流水线程在正常的无扰情况下顺序地流动。如果微码不正确地推测未采用的分支转移,则微引擎如下所示又招致1个周期的没有效果的执行:
推测不被采用的分支转移/采用分支转移
                   | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
           ---------------+----+----+----+----+----+----+----+----+----+
      微存储查找            | n1 | cb | n2 | XX | b1 | b2 | b3 | b4 | b5 |
      寄存器地址生成      | | n1 | cb | n2 | XX | b1 | b2 | b3 | b4 |
      寄存器文件查找     | | | n1 | cb | n2 | XX | b1 | b2 | b3 |
      ALU/shifter/cc      | | | | n1 | cb | n2 | XX |b1 |b2 |
      写回               | | | | | n1 | cb | n2 | XX |b1 |
其中,nx是预分支转移微字(n1设置cc’s)
cb是有条件的分支转移
bx是后分支转移微字
XX是被中止的微字
在跳转指令的情况下,会导致3个额外周期的等待时间,因为直到其中跳转处于ALU阶段的周期结束,才知道分支转移地址:
                       | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
          -----------------+----+----+----+----+----+----+----+----+----+
      微存储查找            | n1 | jp | XX | XX | XX | j1 | j2 | j3 | j4 |
      寄存器地址生成      | | n1 | jp | XX | XX | XX | j1 | j2 | j3 |
      寄存器文件查找     | | | n1 | jp | XX | XX | XX | j1 | j2 |
      ALU/shifter/cc      | | | | n1 | jp |XX  | XX | XX | j1 |
      写回               | | | | | n1 | jp | XX | XX | XX |
关联文本切换:
参考图3B,示出来自关联文本切换指令的一种格式。关联文本切换是使一种不同的关联文本(和有关的PC)被选择的分支转移的一种特殊格式。关联文本切换也进入某段分支转移等待时间。考虑以下的关联文本切换:
                          | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
             ---------------+----+----+----+----+----+----+----+----+----+
      微存储查找              | o1 | ca | br | n1 | n2 | n3 | n4 | n5 | n6 |
      寄存器地址生成        | | o1 | ca | XX | n1 | n2 | n3 | n4 | n5 |
      寄存器文件查找       | | | o1 | ca | XX | n1 | n2 | n3 | n4 |
      ALU/shifter/cc        | | | | o1 | ca | XX | n1 | n2 | n3 |
      写回                 | | | | | ol | ca | XX | n1 | n2 |
其中,ox是旧的关联文本流程
      br是旧关联文本中的分支转移微字
      ca是关联文本重新仲裁(导致关联文本切换)
      nx是新的关联文本流程
      XX是被中止的微字
在关联文本切换中,Abr@微字被中止,以避免可能由保存正确的旧关联文本PC导致的控制与定时复杂性。
在分支转移可以选择0、1或2周期的分支转移延期模式前,条件分支转移根据ALU条件代码(被设置在分支转移前的微字上)而工作。在操作微字的有条件的分支转移可以选择0或1周期的分支转移延期模式之前,条件代码设置2个或更多的微字。所有其他的分支转移(包括关联文本重新仲裁)可以选择0或1周期的分支转移延期模式。该结构可被设计成使前面分支转移的分支转移延期窗口内的关联文本仲裁微字、跳转或关联文本仲裁微字成为违法的选项。也就是说,在一些实施例中,不允许在流水线程中的分支转移过渡期间发生关联文本切换,因为如所述的内容,它会使旧关联文本PC的保存过度的复杂化。该结构也可被设计成使前面分支转移的分支转移延期窗口内的分支转移、跳转或关联文本仲裁微字成为非法,以避免复杂的、可能不可预知的分支转移行为。
每个微引擎22a-22f都支持四种关联文本的多线程执行。这其中的一个原因是允许一个线程在另一个线程刚发出存储器引用并且必须等到在做更多工作前完成引用之后开始执行。该行为对于维持微引擎的有效的硬件执行很关键,因为存储器等待时间很重要。用不同的方式说,如果只支持一个单一的线程执行,则微引擎将空等许多周期,等候引用返回,从而减少了总体的计算吞吐量。通过跨越几个线程执行有用的独立运作,多线程执行允许微引擎隐藏存储器等待时间。提供了两种同步机制,以便允许线程发出SRAM或SDRAM引用,随后与该引用完成时的时间点顺序地同步。
一个机制是“立即同步”。在立即同步中,微引擎发出引用并立即交换出该关联文本。当对应的引用完成时,将用信号通知关联文本。一旦被用信号通知,当发生关联文本-交换事件并轮到它来运行时,关联文本就将被换回,用于执行。这样,从一个单一关联文本的指令流的角度来看,发出存储器引用后该微字直到引用完成才被加以执行。
另一种机制是“延迟的同步”。在延迟的同步中,微引擎发出引用,然后继续执行与引用无关的某项其他有用的工作。一段时间后,在进一步的工作被执行之前,必须使线程的执行流与所发出引用的完成同步。这时,执行同步的微字,它将交换出当前线程,并且以后当已完成引用时,将其换回;或者,继续执行当前线程,因为已经完成引用。通过使用两种不同的信令方案,来执行延迟的同步。
如果存储器引用与传送寄存器有关,则当设置或清除对应的传送寄存器有效位时,生成从其触发线程的信号。例如,当A的有效位被设置时,将数据存入传送寄存器A的SRAM读取将被用信号通知。如果存储器引用与转换FIFO或接收FIFO(而非传送寄存器)有关,则当在SDRAM控制器26a中完成引用时,生成信号。每种关联文本只有一个信号状态被保存在微引擎调度器中,因此,只有一个未完成的信号可以存在于这个方案中。
至少有两种普通操作范例,可以根据它们来设计微控制器微程序。一种范例会是:整个微控制器计算吞吐量和整个存储器带宽以单一线程执行等待时间为代价来被加以优化。当系统具有多个微引擎(每个微引擎对不相关数据分组执行多个线程)时,这种范例会很有意义。
第二种操作范例是:应该以整个微引擎计算吞吐量和整个存储器带宽为代价,来优化微引擎的执行等待时间。这个范例可涉及具有实时约束的线程的执行,即,约束指出某项工作必须绝对由某个规定的时间来做。这种约束要求:与存储器带宽或整个计算吞吐量等考虑事项相比,要为单一线程执行的优化提供优先级。实时线程将意味着只执行一个线程的一个单一的微引擎。将不会处理多个线程,因为目标是:尽快允许单个的实时线程被执行一多个线程的执行可能妨碍这个能力。
在发出存储器引用和关联文本切换方面,这两个范例的编码风格会有重大的不同。在实时的情况下,目标是:尽快发出尽可能多的存储器引用,以便使由那些引用导致的存储器等待时间最小化。已尽早发出尽可能多的引用之后,目标将会是:尽可能平行于引用地让微引擎执行尽可能多的计算。对应于实时优化的计算流程是:
o)发出存储器引用1
o)发出存储器引用2
o)发出存储器引用3
o)执行独立于存储器引用1、2和3的工作
o)与存储器引用1的完成同步
o)执行与存储器引用1有关而与存储器引用2与3无关的工作
o)根据前面的工作来发出任何新的存储器引用
o)与存储器引用2的完成同步
o)执行与存储器引用1与2有关并与存储器引用3无关的工作
o)根据前面的工作来发出任何新的存储器引用
o)与存储器引用3的完成同步
o)执行与所有3个引用的完成有关的工作
o)根据前面的工作来发出任何新的存储器引用。
对比而言,对吞吐量和带宽的优化将采取一种不同的方法。关于对微引擎计算吞吐量和整个存储器带宽的优化,较少考虑单一的线程执行等待时间。为了实现这一点,目标将会是:相等地隔开每个线程的微程序上的存储器引用。这将为SRAM和SDRAM控制器提供统一存储器引用的流,并且使当另一个线程被交换出去时1个线程总是可以隐藏所导致的存储器等待时间的这种可能性最大化。
   寄存器文件地址类型:
参考图3C,存在的两个寄存器地址空间是局部可访问寄存器和可由所有微引擎访问的全局可访问寄存器。“通用寄存器(GPRs)”作为两个分开的排(A排和B排)被加以执行,这些排的地址在逐字的基础上被交错,以便A排寄存器具有1sb=0,B排寄存器具有1sb=1。每个排能够执行对其排内两个不同的字的同时读取和写入。
跨越排A和B,寄存器组76b也被组织入32个寄存器(每根线程相对可寻址)的四个窗口76b0-76bx。这样,thread_0将在77a(寄存器0)处发现它的寄存器0,thread_1将在77b(寄存器32)处发现其register_0,thread_2将在77c(寄存器64)处发现其register_0,thread_3将在77d(寄存器96)处发现其register_0。相对寻址被支持,以便多个线程可使用确切相同的控制存储器和位置,但访问寄存器的不同窗口并执行不同的功能。寄存器窗口寻址和排寻址的使用提供了只利用微引擎22f中的双端  RAMS的必要的读取带宽。
这些设置为窗口化寄存器不必保存从一个关联文本切换到另一个关联文本切换的数据,以便消除关联文本交换文件或堆栈的正常的压入/弹出。这里的关联文本切换具有从一个关联文本变化到另一个关联文本的0周期辅助操作。相对寄存器寻址在通用寄存器组的地址宽度上将寄存器排分成各个窗口。相对寻址允许相对于窗口的起点访问任何窗口。绝对寻址也在这种结构中得到支持,在该结构中,通过提供寄存器的确切地址,绝对地址中的任何一个绝对地址可以由任何线程来进行访问。
通用寄存器78的寻址可以依赖于微字格式的2种模式而发生。这两种模式是绝对模式和相对模式。在绝对模式中,寄存器地址的寻址直接在7位源字段(a6-a0或b6-b0)中被规定:
               7    6    5    4    3    2    1   0
          +--- +--- +--- +--- +--- +--- +--- +---+
A GPR:   | a6 | 0  | a5 | a4 | a3 | a2 | a1 | a0 |  a6=0
B GPR:   | b6 | 1  | b5 | b4 | b3 | b2 | b1 | b0 |  b6=0
SRAM/ASB:| a6 | a5 | a4 | 0  | a3 | a2 | a1 | a0 |  a6=1,a5=0,a4=0
SDRAM:   | a6 | a5 | a4 | 0  | a3 | a2 | a1 | a0 |  a6=1,a5=0,a4=1在8位dest字段(d7-d0)中被直接规定的寄存器地址:
                7    6    5    4    3    2    1    0
           +----+----+----+----+----+----+----+----+
A GPR:   | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 | d7=0,d6=0
B GPR:   | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 | d7=0,d6=1
SRAM/ASB:| d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 | d7=1,d6=0,d5=0
SDRAM:   | d7 | d6 | d5 | d4 | d3 | d2 | d1 | d0 | d7=1,d6=0,d5=1
如果<a6:a5>=1,1,<b6:b5>=1,1,或者<d7:d6>=1,1,那么,较低的位被解释为与关联文本相关的地址字段(以下有描述)。当一个无关的A或B源地址在A、B绝对字段中被指定时,只有SRAM/ASB和SDRAM地址空间的下半部分能够被寻址。实际上,读取绝对SRAM/SDRAM设备具有有效的地址空间;但是,由于这个限制不应用于dest字段,因此,写入SRAM/SDRAM仍然使用全部的地址空间。
在相对模式中,如5位源字段(a4-a0或b4-b0)所定义的,规定的地址在关联文本空间内偏移:
             7    6    5   4   3   2   1   0
          +---  +---+---+---+---+---+---+---+
A GPR:   | a4  | 0 |关联文本| a3  | a2 | a1 | a0  |  a4=0
B GPR:   | b7  | 1 |关联文本| b3  | b2 | b1 | b0  |  b4=0
SRAM/ASB:| ab4 | 0 | ab3 |关联文本| b2 | b1 | ab0 |  ab4=1,ab3=0
SDRAM:   | ab4 | 0 | ab3 |关联文本| b2 | b1 | ab0 |  ab4=1,ab3=1或者,如6位dest字段(d5-d0)所定义的:
               7    6   5    4    3    2    1    0
          +--- +--- +---+--- +--- +--- +--- +--- +
A GPR:   | d5 | d4 |关联文本| d3 | d2 | d1 | d0 | d5=0,d4=0
B GPR:   | d5 | d4 |关联文本| d3 | d2 | d1 | d0 | d5=0,d4=1
SRAM/ASB:| d5 | d4 | d3 |关联文本| d2 | d1 | d0 | d5=1,d4=0,d3=0
SDRAM:   | d5 | d4 | d3 |关联文本| d2 | d1 | d0 | d5=1,d4=0,d3=1
如果<d5:d4>=1,1,则目标地址不会寻址有效的寄存器,这样,dest操作数不被写回。
以下的寄存器可从微引擎和存储器控制器进行全局访问:
散列单元寄存器
便笺式存储器和普通的寄存器
接收FIFO和接收状态FIFO
发送FIFO
发送控制FIFO
微引擎不被中断驱动。每个微流程一直执行到完成,然后,根据由处理器12中的其他设备用信号通知的状态,来选择一个新的流程。
参考图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被顺序地移到存储器16a。虽然未示出,但是,可以为读取提供相同的队列结构。SDRAM控制器26a还包括一个引擎97,以便从微引擎和PCI总线中拉出数据。
额外的队列包括保持许多请求的PCI地址队列94和ASB读/写队列96。存储器请求经由多路复用器106被发送到SDRAM接口110。多路复用器106由SDRAM仲裁器91来进行控制,该仲裁器检测每个队列的充满度和各个请求的状态,并从中根据被存储在优先服务控制寄存器100中的一个可编程值来决定优先级。
一旦对多路复用器106的控制选择一项存储器引用请求,该存储器引用请求就被发送到解码器108,在那里,它被解码并生成一个地址。被解码的地址被发送到SDRAM接口110,在那里,它被分解成行与列地址选通脉冲,以便访问SDRAM 16a并写入或读取数据线程16a(发送数据到总线112)上的数据。在一项实施中,总线112实际上是两个分开的总线,而不是一个单一的总线。这些分开的总线将包括耦合分布式微引擎22a-22f的一个读总线和耦合分布式微引擎22a-22f的一个写总线。
SDRAM控制器26a的一个特点是:当存储器引用被存储在队列90中时,除了可以加以设置的被优化的MEM位以外,还有一个Achaining@(链锁位@)。当被设置时,该链锁位允许对邻近的存储器引用的特殊处理。如前文所述,仲裁器12控制将选择哪个微引擎来将指挥总线上的存储器引用请求提供给队列90(图4)。链位的赋值将控制仲裁器,让仲裁器选择以前请求该总线的功能单元,因为链位的设置指出微引擎发出过链请求。
当链锁位被设置时,邻近的存储器引用将在队列90中被接收。那些邻近的引用通常将被存储在顺序队列90c中,因为邻近的存储器引用是来自一个单一线程的多个存储器引用。为了提供同步,存储器控制器26a只需要连锁式存储器引用(已做)结束时的信号。但是,在被优化的存储链锁中,(例如,当设置被优化的MEM位和链锁位时,)存储器引用可进入不同的排,并且在其他的排被完全耗尽之前,潜在地在多个排(发出信号Adone@(已做@))中的一个排上完成,因此破坏了一致性。所以,链位被控制器110用来维持来自当前队列的存储器引用。
参考图4A,示出SDRAM控制器26a中的仲裁政策的流程代表图。仲裁政策支持连锁式微引擎存储器请求。程序115通过为连锁式微引擎存储器引用请求115a作检查而开始。进程115保持连锁式请求,直到链位被清除。该进程检查由PCI总线请求115c跟随的ASB总线请求115b、“高优先级队列服务115d”、“相对排请求115e”、“顺序排请求115f”和“相同的排请求115g”。连锁式请求被完全服务,而服务115b-115d按轮流顺序来进行服务。只有当完全耗尽服务115a-115d时,程序才处理服务115e-115g。连锁式微引擎存储器引用请求是在前面的SDRAM存储器请求具有链位装置时。当链位被设置时,仲裁引擎只是再次简单地服务相同的队列,直到链位被清除为止。由于当ASB处于等候状态时施加于Strong arm核心的严厉的性能惩罚,ASB具有比PCI更高的优先级。由于PCI的等待时间请求,PCI具有比微引擎更高的优先级。但是,利用其他总线,仲裁优先级可以截然不同。
如图4B所示,示出没有运行的存储器优化和具有运行的存储器优化的存储器的典型的定时。可见,运行的存储器优化的使用最大地使用了总线,因此,将固有的等待时间隐藏在物理的SDRAM设备内。在这个例子中,未被优化的访问可用14个周期,而被优化的访问可用7个周期。
参考图5,示出SRAM的存储器控制器26b。存储器控制器26b包括一个地址与命令队列120。存储器控制器26a(图4)具有基于奇数与偶数分排的一个存储器优化队列,而存储控制26b根据存储操作的类型(即读或写)来被进行优化。地址与命令队列120包括高优先级队列120a、是SRAM所执行的主要存储器引用功能的读队列120b,以及一般将包括到SRAM的所有写入和不会被优化的读取的顺序队列120c。虽然未示出,但地址与命令队列120还可包括一个写入队列。
SRAM控制器26b还包括核心总线接口逻辑(即ASB总线122)。ASB总线接口逻辑122将核心处理器20连接到SRAM控制器26b。ASB总线包括一个32位数据路径和一个28位地址路径。通过MEMASB数据设备128(例如,缓冲器),到和从存储器访问数据。MEM ASB数据设备128是用于写数据的一个队列。如果经由ASB接口122有来自核心处理器20的进入数据,则数据可被存入MEM ASB设备128,并且随后通过SRAM接口140从MEM ASB设备128移到SRAM存储器16b。虽然未示出,但可以为读取提供相同的队列结构。SRAM控制器26b还包括一个引擎127,以便从微引擎和PCI总线拉出数据。
存储器请求经由多路复用器126被发送到SRAM接口140。多路复用器126由SRAM仲裁器131来控制,该SRAM仲裁器检测每个队列的充满度和各个请求的状态,并从中根据被存储在优先级服务控制寄存器130中的一个可编程值来决定优先级。一旦对多路复用器126的控制选择一个存储器引用请求,该存储器引用请求就被发送到为它解码并生成一个地址的解码器138。SRAM单元维持对“存储映射芯片外SRAM”和“扩展ROM”的控制。SRAM控制器26b可以寻址(例如)16兆字节,例如,8兆字节映射为SRAM 16b,8兆字节为特殊的功能保留,包括:经由快闪只读存储器16c的引导空间;MAC设备13a、13b的控制台端口访问和对有关(RMON)计数器的访问。SRAM用于本地的查找表格和队列管理功能。
SRAM控制器26b支持以下的事务:
微引擎请求    (经由专用总线)    到/从SRAM
核心处理器    (经由ASB总线)     到/从SRAM
SRAM控制器26b执行存储器引用排序,以便使从SRAM接口140到存储器16b的流水线程中的延迟(泡影)最小化。SRAM控制器26b根据读取功能来进行存储器引用排序。一个泡影可根据所用存储设备的类型是1个周期或2个周期。
SRAM控制器26b包括一个锁定查找设备142,它是用于读取锁定查找的八(8)项目地址内容可寻址存储器。每个位置包括由后来的读取锁定请求检查的一个有效位。地址与命令队列120还包括一个“读取锁定失败队列120d”。该“读取锁定失败队列120d”被用来保存因存储器的一个部分上存在锁定而失败的读取存储器引用请求。也就是说,一个微引擎发出一项存储器请求,该请求具有在地址与控制队列120中被处理的一个读取锁定请求。存储器请求将操作顺序队列120c或读队列120b,并将其识别为一项读取锁定请求。控制器26b将访问锁定查找设备142,以便确定这个存储器位置是否已经被锁定。如果这个存储器位置由离开任何原先的读取锁定请求锁定,则这项存储器锁定请求将失败并将被存储在读取锁定失败队列120d中。如果它被解锁,或者如果142示出那个地址上没有锁定,则存储器引用的地址将被SRAM接口140用来执行对存储器16b的传统的SRAM地址读/写请求。命令控制器与地址发生器138也会将锁定输入锁定查找设备142,以便后来的读取锁定请求将找到被锁定的存储器位置。在对锁定的需求结束后,存储器位置通过程序中的微控制指令的操作被解锁。位置通过清除CAM中的有效位来被解锁。解锁之后,读取锁定失败队列120d成为最高优先级队列,为所有错过的已排队的读取锁定提供了发出存储器锁定请求的机会。
如图5A所示,示出没有运行的存储器优化和具有运行的存储器优化的静态随机存取存储器的典型定时。可见,分组读和写改善了消除死周期的喜欢时间(cycletime)。
参考图6,示出微引擎22与FBUS接口逻辑(FBI)之间的通讯。网络应用中的FBUS接口28可以执行来自FBUS 18的进入数据分组的首部处理。FBUS接口执行的一项关键的功能是抽取数据分组的首部,以及SRAM中可编微程序的源/目的地/协议散列查找。如果散列没有成功地解决,则数据分组的首部被提升到核心处理器28作更加复杂的处理。
FBI 28包含发送FIFO 182、接收FIFO 183、散列单元188,以及FBI控制与状态寄存器189。这四个单元经由对SRAM总线38(被连接到微引擎中的传送寄存器78和80)的时间多路化访问来与微引擎22进行通讯。也就是说,到和来自微引擎的所有通讯都经由传送寄存器78和80。FBUS接口28包括用于在各个时间周期期间将数据推入传送寄存器的一个推入状态机200,在各个时间周期,SRAM不正在使用SRAM数据总线(总线38的一部分)和用于从各个微引擎中的传送寄存器中取出数据的拉出状态机202。
散列法单元包括一对FIFO=s 188a和188b。散列单元确定FBI 28接收到一项FBI_hash请求。散列单元188从调用微引擎22中取出散列键值。在这些键值被取出和散列之后,索引号被传递回调用微引擎22。多至三个散列在一项单一的FBI_hash请求下被加以执行。总线34和38都是单向的:SDRAM_push/pull_data和Sbus_push/pull_data。这些总线中的每个总线都需要控制信号将读/写控制提供给合适的微引擎22传送寄存器。
通常,传送寄存器要来自控制它们的关联文本的保护,以保证读取的正确性。特别是,如果写传送寄存器正在被thread_1用来将数据提供给SDRAM16a,则直到从SDRAM控制器26a返回的信号指出该寄存器已被升级和现在可以被再用,thread_1才可以重写这个寄存器。每次写入不需要从目的地返回的信号(指出功能已被完成),因为如果该线程写到在具有多项请求的目的地处的相同的命令队列,则完成的顺序在那个命令队列内得到保证,这样,只有最后的命令需要发回信号到该线程。但是,如果线程使用多个命令队列(顺序和读取),那么,这些命令请求必须被分成各项分开的关联文本任务,以便经由关联文本交换来维持命令次序。这段开始时所指出的例外情况与某类操作有关,这些操作使用对来自FBI的传送寄存器的未经请求的“推入”,以便获得FBUS状态信息。为了保护有关传送寄存器的读/写决定性,当设立这些特殊的FBI推入操作时,FBI提供一个特殊的Push_protect信号。
使用FBI未经请求的推入技术的任何微引擎22必须在FBUS接口/微引擎与传送寄存器达成协议之前测试保护标记。如果标记没有被设置,则传送寄存器可以由微引擎来进行访问。如果标记被设置,则关联文本应该在访问寄存器之前等候N个周期。这个先验的计算由正在被推入的传送寄存器的数量以及一个前端保护窗口来确定。基本的思想是:微引擎必须测试这个标记,然后迅速将它希望从读传送寄存器读取的数据移到邻近周期中的GPR’s,所以,推入引擎不会与微引擎读取发生冲突。
其他实施例
不言而喻,已经详细地描述了本发明,但是,前述的描述意在展示而不是限制本发明的范围。

Claims (17)

1.一种随机存取存储器的控制器,其特征在于所述控制器包括:
地址和命令队列模块,用于保存来自多个微控制功能单元的存储器引用,该地址与命令队列模块包括:
读队列模块;
保存来自核心处理器的存储器引用的第一读/写队列模块;以及,
包括一仲裁器的控制逻辑模块,该仲裁器检测每个队列模块的充满度和未完成的存储器引用的完成状态,以便从所述队列模块中的一个队列模块中选择一存储器引用。
2.权利要求1的控制器,其特征在于,控制逻辑模块根据由存储在优先级服务控制寄存器中的可编程值所代表的存储器引用的优先级,从所述队列模块中的一个队列模块中选择一存储器引用,以便提供下一个存储器引用。
3.权利要求1的控制器,其特征在于,地址与命令队列模块还包括:
保存来自高优先级任务的存储器引用的高优先级队列。
4.权利要求1的控制器,其特征在于,微引擎将存储器引用排序成读存储器引用和写存储器引用。
5.权利要求1的控制器,其特征在于,地址与命令队列模块还包括:
保存写存储器请求的顺序队列模块,其中,控制器检查进入的存储器引用请求,并根据所指定的地址模式将进入的存储器引用请求分类成读队列或顺序队列。
6.权利要求1的控制器,其特征在于,地址与命令队列模块还包括:
顺序队列;以及,
其中,如果存储器引用请求没有存储器优化位设定,则存储器引用请求被存储在顺序队列中。
7.权利要求1的控制器,其特征在于,地址与命令队列模块在单个存储结构中实现,并且还包括:
用于保存存储器引用的顺序队列模块;
用于保存存储器引用的读队列模块;
用于保存存储器引用的高优先级队列模块;
读锁定失败队列模块,以保持由于在控制器所控制的随机存取存储器一部分上预先存在的锁定而失败的读锁定存储器引用请求;以及
存储结构被分割成四个不同的队列区域,每个区域具有它自己的首部、尾指针。
8.权利要求7的控制器,其特征在于,地址与命令队列模块还包括:
插入队列控制和移去队列仲裁逻辑模块,以分别控制来自队列的存储器引用的插入和移去。
9.权利要求1的控制器,其特征在于还包括:
命令解码器与地址发生器,响应于所述队列中一个队列的选中存储器引用的地址,产生地址与命令来控制存储器接口。
10.权利要求1的控制器,其特征在于还包括:
响应于所产生的地址和命令的存储器接口,以产生存储器控制信号。
11.权利要求9的控制器,其特征在于,控制器还包括:
用于读锁定的查找的锁定查找内容可寻址存储器。
12.权利要求10的控制器,其特征在于,地址与命令队列模块还包括:
读锁定失败队列模块,它保持由于在控制器所控制的随机存取存储器一部分上预先存在的锁定而失败的读锁定存储器引用请求。
13.权利要求12的控制器,其特征在于如果微控制功能单元之一通过访问锁定查找存储器而发出读锁定请求,以确定读锁定请求中所指定的存储器位置是否已经被锁定,则命令解码器作出响应。
14.权利要求13的控制器,其特征在于如果存储器位置在任何先前的读锁定请求处被锁定,则所发出的存储器锁定请求失败并被存储在读锁定失败队列模块中。
15.权利要求14的控制器,其特征在于如果存储器位置不被锁定,则存储器接口把所发出的读引用转换成存储器的地址信号。
16.权利要求15的控制器,其特征在于命令解码器与地址发生器将对应于所发出的读引用的存储地址的锁定输入到锁定查找存储器中。
17.权利要求1的控制器,其特征在于控制器被配置成控制静态随机存取存储器即SRAM。
CNB00815256XA 1999-08-31 2000-08-17 并行处理器结构的sram控制器 Expired - Fee Related CN1192314C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/387,110 1999-08-31
US09/387,110 US6427196B1 (en) 1999-08-31 1999-08-31 SRAM controller for parallel processor architecture including address and command queue and arbiter

Publications (2)

Publication Number Publication Date
CN1399739A CN1399739A (zh) 2003-02-26
CN1192314C true CN1192314C (zh) 2005-03-09

Family

ID=23528506

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB00815256XA Expired - Fee Related CN1192314C (zh) 1999-08-31 2000-08-17 并行处理器结构的sram控制器

Country Status (9)

Country Link
US (3) US6427196B1 (zh)
EP (1) EP1214660B1 (zh)
CN (1) CN1192314C (zh)
AT (1) ATE267420T1 (zh)
AU (1) AU6646100A (zh)
CA (1) CA2391792C (zh)
DE (1) DE60010907T2 (zh)
HK (1) HK1053728A1 (zh)
WO (1) WO2001016769A1 (zh)

Families Citing this family (118)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6735679B1 (en) * 1998-07-08 2004-05-11 Broadcom Corporation Apparatus and method for optimizing access to memory
US20030095967A1 (en) * 1999-01-25 2003-05-22 Mackay Fabienne BAFF, inhibitors thereof and their use in the modulation of B-cell response and treatment of autoimmune disorders
US7017020B2 (en) * 1999-07-16 2006-03-21 Broadcom Corporation Apparatus and method for optimizing access to memory
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
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6633576B1 (en) * 1999-11-04 2003-10-14 William Melaragni Apparatus and method for interleaved packet storage
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
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6661794B1 (en) 1999-12-29 2003-12-09 Intel Corporation Method and apparatus for gigabit packet assignment for multithreaded packet processing
US6952824B1 (en) * 1999-12-30 2005-10-04 Intel Corporation Multi-threaded sequenced receive for fast network port stream of packets
US6898179B1 (en) * 2000-04-07 2005-05-24 International Business Machines Corporation Network processor/software control architecture
JP4306997B2 (ja) * 2000-05-12 2009-08-05 富士通株式会社 データ制御装置及びatm制御装置
US6859399B1 (en) * 2000-05-17 2005-02-22 Marvell International, Ltd. Memory architecture and system and multiport interface protocol
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
US6751717B2 (en) * 2001-01-23 2004-06-15 Micron Technology, Inc. Method and apparatus for clock synchronization between a system clock and a burst data clock
US7072347B2 (en) * 2001-02-23 2006-07-04 International Business Machines Corporation Assignment of packet descriptor field positions in a network processor
US6868476B2 (en) * 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) * 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7487505B2 (en) * 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US6938133B2 (en) * 2001-09-28 2005-08-30 Hewlett-Packard Development Company, L.P. Memory latency and bandwidth optimizations
US7107413B2 (en) * 2001-12-17 2006-09-12 Intel Corporation Write queue descriptor count instruction for high speed queuing
US7180887B1 (en) * 2002-01-04 2007-02-20 Radisys Patent Properties Routing and forwarding table management for network processor architectures
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
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
JP3743509B2 (ja) * 2002-03-20 2006-02-08 セイコーエプソン株式会社 データ転送制御装置及び電子機器
JP3775318B2 (ja) * 2002-03-20 2006-05-17 セイコーエプソン株式会社 データ転送制御装置及び電子機器
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US7421545B1 (en) * 2002-12-27 2008-09-02 Unisys Corporation Method and apparatus for multiple sequence access to single entry queue
GB2399900B (en) * 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US20040242261A1 (en) * 2003-05-29 2004-12-02 General Dynamics Decision Systems, Inc. Software-defined radio
US7254690B2 (en) * 2003-06-02 2007-08-07 S. Aqua Semiconductor Llc Pipelined semiconductor memories and systems
US7443836B2 (en) * 2003-06-16 2008-10-28 Intel Corporation Processing a data packet
US20050033875A1 (en) * 2003-06-30 2005-02-10 Cheung Frank Nam Go System and method for selectively affecting data flow to or from a memory device
US7634623B2 (en) * 2003-08-29 2009-12-15 Micron Technology, Inc. Method and apparatus for self-timed data ordering for multi-data rate memories and system incorporating same
US7529800B2 (en) * 2003-12-18 2009-05-05 International Business Machines Corporation Queuing of conflicted remotely received transactions
US20050138366A1 (en) * 2003-12-19 2005-06-23 Pan-Loong Loh IPSec acceleration using multiple micro engines
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
JP2005276165A (ja) * 2004-02-27 2005-10-06 Sony Corp 情報処理装置、ネットワークシステム状況呈示方法およびコンピュータプログラム
JP4586526B2 (ja) 2004-02-27 2010-11-24 ソニー株式会社 情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラム
US20050204111A1 (en) * 2004-03-10 2005-09-15 Rohit Natarajan Command scheduling for dual-data-rate two (DDR2) memory devices
US7181568B2 (en) * 2004-03-25 2007-02-20 Intel Corporation Content addressable memory to identify subtag matches
US20050216655A1 (en) * 2004-03-25 2005-09-29 Rosenbluth Mark B Content addressable memory constructed from random access memory
US20060048156A1 (en) * 2004-04-02 2006-03-02 Lim Soon C Unified control store
US7418540B2 (en) * 2004-04-28 2008-08-26 Intel Corporation Memory controller with command queue look-ahead
US7769501B2 (en) * 2004-06-23 2010-08-03 The Boeing Company User-configurable electronic flight bag
US7774393B1 (en) 2004-06-30 2010-08-10 Oracle America, Inc. Apparatus and method for integer to floating-point format conversion
US7478225B1 (en) 2004-06-30 2009-01-13 Sun Microsystems, Inc. Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor
US7185178B1 (en) 2004-06-30 2007-02-27 Sun Microsystems, Inc. Fetch speculation in a multithreaded processor
US7702887B1 (en) 2004-06-30 2010-04-20 Sun Microsystems, Inc. Performance instrumentation in a fine grain multithreaded multicore processor
US7216216B1 (en) 2004-06-30 2007-05-08 Sun Microsystems, Inc. Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window
US7533248B1 (en) 2004-06-30 2009-05-12 Sun Microsystems, Inc. Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor
US7178005B1 (en) 2004-06-30 2007-02-13 Sun Microsystems, Inc. Efficient implementation of timers in a multithreaded processor
US7370243B1 (en) 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7437538B1 (en) 2004-06-30 2008-10-14 Sun Microsystems, Inc. Apparatus and method for reducing execution latency of floating point operations having special case operands
US7353364B1 (en) 2004-06-30 2008-04-01 Sun Microsystems, Inc. Apparatus and method for sharing a functional unit execution resource among a plurality of functional units
US7330988B2 (en) * 2004-06-30 2008-02-12 Sun Microsystems, Inc. Method and apparatus for power throttling in a multi-thread processor
US7861063B1 (en) 2004-06-30 2010-12-28 Oracle America, Inc. Delay slot handling in a processor
US7676655B2 (en) * 2004-06-30 2010-03-09 Sun Microsystems, Inc. Single bit control of threads in a multithreaded multicore processor
US7426630B1 (en) 2004-06-30 2008-09-16 Sun Microsystems, Inc. Arbitration of window swap operations
US8095778B1 (en) 2004-06-30 2012-01-10 Open Computing Trust I & II Method and system for sharing functional units of a multithreaded processor
US7434000B1 (en) 2004-06-30 2008-10-07 Sun Microsystems, Inc. Handling duplicate cache misses in a multithreaded/multi-core processor
US7373489B1 (en) 2004-06-30 2008-05-13 Sun Microsystems, Inc. Apparatus and method for floating-point exception prediction and recovery
US7523330B2 (en) * 2004-06-30 2009-04-21 Sun Microsystems, Inc. Thread-based clock enabling in a multi-threaded processor
US7383403B1 (en) 2004-06-30 2008-06-03 Sun Microsystems, Inc. Concurrent bypass to instruction buffers in a fine grain multithreaded processor
US8225034B1 (en) 2004-06-30 2012-07-17 Oracle America, Inc. Hybrid instruction buffer
US7747771B1 (en) 2004-06-30 2010-06-29 Oracle America, Inc. Register access protocol in a multihreaded multi-core processor
US7941642B1 (en) 2004-06-30 2011-05-10 Oracle America, Inc. Method for selecting between divide instructions associated with respective threads in a multi-threaded processor
US7890734B2 (en) 2004-06-30 2011-02-15 Open Computing Trust I & II Mechanism for selecting instructions for execution in a multithreaded processor
US7401206B2 (en) * 2004-06-30 2008-07-15 Sun Microsystems, Inc. Apparatus and method for fine-grained multithreading in a multipipelined processor core
US7343474B1 (en) 2004-06-30 2008-03-11 Sun Microsystems, Inc. Minimal address state in a fine grain multithreaded processor
US7200699B2 (en) * 2004-09-02 2007-04-03 Intel Corporation Scalable, two-stage round robin arbiter with re-circulation and bounded latency
US20060095730A1 (en) * 2004-09-30 2006-05-04 Gilbert Wolrich Expansion of compute engine code space by sharing adjacent control stores using interleaved program addresses
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
US8037250B1 (en) 2004-12-09 2011-10-11 Oracle America, Inc. Arbitrating cache misses in a multithreaded/multi-core processor
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
US7467256B2 (en) * 2004-12-28 2008-12-16 Intel Corporation Processor having content addressable memory for block-based queue structures
US20060140203A1 (en) * 2004-12-28 2006-06-29 Sanjeev Jain System and method for packet queuing
US20060236011A1 (en) * 2005-04-15 2006-10-19 Charles Narad Ring management
US8082396B2 (en) * 2005-04-28 2011-12-20 International Business Machines Corporation Selecting a command to send to memory
US7245527B2 (en) * 2005-05-16 2007-07-17 Freescale Semiconductor, Inc. Nonvolatile memory system using magneto-resistive random access memory (MRAM)
CN1993709B (zh) * 2005-05-20 2010-12-15 索尼株式会社 信号处理设备
US7634622B1 (en) 2005-06-14 2009-12-15 Consentry Networks, Inc. Packet processor that generates packet-start offsets to immediately store incoming streamed packets using parallel, staggered round-robin arbitration to interleaved banks of memory
US7797610B1 (en) * 2005-07-19 2010-09-14 Xilinx, Inc. Method and apparatus for virtual quad-port random access memory
US7853951B2 (en) * 2005-07-25 2010-12-14 Intel Corporation Lock sequencing to reorder and grant lock requests from multiple program threads
US20070044103A1 (en) * 2005-07-25 2007-02-22 Mark Rosenbluth Inter-thread communication of lock protected data
US20070124728A1 (en) * 2005-11-28 2007-05-31 Mark Rosenbluth Passing work between threads
US20070157030A1 (en) * 2005-12-30 2007-07-05 Feghali Wajdi K Cryptographic system component
US20070245074A1 (en) * 2006-03-30 2007-10-18 Rosenbluth Mark B Ring with on-chip buffer for efficient message passing
EP2122473B1 (en) * 2007-01-10 2012-12-05 Mobile Semiconductor Corporation Adaptive memory system for enhancing the performance of an external computing device
US7926013B2 (en) * 2007-12-31 2011-04-12 Intel Corporation Validating continuous signal phase matching in high-speed nets routed as differential pairs
US7921195B2 (en) * 2008-06-09 2011-04-05 International Business Machines Corporation Optimizing service processing based on business information, operational intelligence, and self-learning
GB2461716A (en) * 2008-07-09 2010-01-13 Advanced Risc Mach Ltd Monitoring circuitry for monitoring accesses to addressable locations in data processing apparatus that occur between the start and end events.
US20100115494A1 (en) * 2008-11-03 2010-05-06 Gorton Jr Richard C System for dynamic program profiling
US8024719B2 (en) 2008-11-03 2011-09-20 Advanced Micro Devices, Inc. Bounded hash table sorting in a dynamic program profiling system
US8478948B2 (en) * 2008-12-04 2013-07-02 Oracle America, Inc. Method and system for efficient tracing and profiling of memory accesses during program execution
US7613850B1 (en) 2008-12-23 2009-11-03 International Business Machines Corporation System and method utilizing programmable ordering relation for direct memory access
US20100250798A1 (en) * 2009-03-31 2010-09-30 Sean Eilert Hierarchical memory architecture with an interface to differing memory formats
CN101630300B (zh) * 2009-05-18 2014-09-10 上海闻泰电子科技有限公司 一种利用sram总线扩展t卡的方法
CN101667105B (zh) * 2009-09-02 2011-12-28 龙芯中科技术有限公司 一种对动态内存进行动态读写访问分组的调度装置和方法
US8838853B2 (en) * 2010-01-18 2014-09-16 Marvell International Ltd. Access buffer
US8942248B1 (en) * 2010-04-19 2015-01-27 Altera Corporation Shared control logic for multiple queues
GB2495959A (en) 2011-10-26 2013-05-01 Imagination Tech Ltd Multi-threaded memory access processor
JP6146128B2 (ja) * 2013-05-20 2017-06-14 ヤマハ株式会社 データ処理装置
US10310923B1 (en) 2014-08-28 2019-06-04 Seagate Technology Llc Probabilistic aging command sorting
US10706101B2 (en) 2016-04-14 2020-07-07 Advanced Micro Devices, Inc. Bucketized hash tables with remap entries
US10831403B2 (en) 2017-05-19 2020-11-10 Seagate Technology Llc Probabalistic command aging and selection
CN113553009B (zh) * 2021-07-27 2022-06-03 湖南国科微电子股份有限公司 数据读取方法、数据写入方法及数据读写方法

Family Cites Families (154)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3623001A (en) * 1970-01-06 1971-11-23 Peripheral Business Equipment Input data preparation system
BE795789A (fr) * 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
IT986411B (it) * 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
US4016548A (en) * 1975-04-11 1977-04-05 Sperry Rand Corporation Communication multiplexer module
CH584488A5 (zh) * 1975-05-05 1977-01-31 Ibm
US4075691A (en) * 1975-11-06 1978-02-21 Bunker Ramo Corporation Communication control unit
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) * 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4831358A (en) * 1982-12-21 1989-05-16 Texas Instruments Incorporated Communications system employing control line minimization
US4658351A (en) * 1984-10-09 1987-04-14 Wang Laboratories, Inc. Task control means for a multi-tasking data processing system
DE3688759T2 (de) * 1985-03-20 1994-01-05 Hitachi Ltd Ein-/Ausgabe-Steuerungssystem.
US4745544A (en) * 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4788640A (en) 1986-01-17 1988-11-29 Intel Corporation Priority logic system
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
US5115507A (en) * 1987-12-23 1992-05-19 U.S. Philips Corp. System for management of the priorities of access to a memory and its application
FR2625340B1 (fr) * 1987-12-23 1990-05-04 Labo Electronique Physique Systeme graphique avec controleur graphique et controleur de dram
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
EP0446721B1 (en) * 1990-03-16 2000-12-20 Texas Instruments Incorporated Distributed processing memory
US5390329A (en) * 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
US5404482A (en) * 1990-06-29 1995-04-04 Digital Equipment Corporation Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
AU630299B2 (en) 1990-07-10 1992-10-22 Fujitsu Limited A data gathering/scattering system in a parallel computer
US5367678A (en) 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
KR960001273B1 (ko) * 1991-04-30 1996-01-25 가부시키가이샤 도시바 단일칩 마이크로컴퓨터
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) * 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) * 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
GB2260429B (en) * 1991-10-11 1995-05-24 Intel Corp Versatile cache memory
US5392391A (en) * 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
DE69231957T2 (de) 1991-10-21 2002-04-04 Toshiba Kawasaki Kk Hochgeschwindigkeitsprozessor zum fähiger Abhandeln mehrerer Unterbrechungen
US5452437A (en) 1991-11-18 1995-09-19 Motorola, Inc. Methods of debugging multiprocessor system
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
JP2823767B2 (ja) * 1992-02-03 1998-11-11 松下電器産業株式会社 レジスタファイル
US5459842A (en) 1992-06-26 1995-10-17 International Business Machines Corporation System for combining data from multiple CPU write requests via buffers and using read-modify-write operation to write the combined data to the memory
DE4223600C2 (de) 1992-07-17 1994-10-13 Ibm Mehrprozessor-Computersystem und Verfahren zum Übertragen von Steuerinformationen und Dateninformation zwischen wenigstens zwei Prozessoreinheiten eines Computersystems
US5404484A (en) * 1992-09-16 1995-04-04 Hewlett-Packard Company Cache system for reducing memory latency times
KR100313261B1 (ko) 1992-12-23 2002-02-28 앙드래베이너,조엘브르리아드 저전력형다중작업제어기(명칭정정)
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
DE69429204T2 (de) * 1993-03-26 2002-07-25 Cabletron Systems Inc Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk
US5522069A (en) * 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
CA2122182A1 (en) * 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
JPH0740746A (ja) * 1993-07-29 1995-02-10 Aisin Seiki Co Ltd 車両用サンルーフ装置のチエツク機構
CA2107299C (en) 1993-09-29 1997-02-25 Mehrad Yasrebi High performance machine for switched communications in a heterogenous data processing network gateway
US5446736A (en) * 1993-10-07 1995-08-29 Ast Research, Inc. Method and apparatus for connecting a node to a wireless network using a standard protocol
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US5740402A (en) * 1993-12-15 1998-04-14 Silicon Graphics, Inc. Conflict resolution in interleaved memory systems with multiple parallel accesses
US5490204A (en) * 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5835755A (en) 1994-04-04 1998-11-10 At&T Global Information Solutions Company Multi-processor computer system for operating parallel client/server database processes
JP3547482B2 (ja) * 1994-04-15 2004-07-28 株式会社日立製作所 情報処理装置
US5542088A (en) * 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
US5721870A (en) 1994-05-25 1998-02-24 Nec Corporation Lock control for a shared main storage data processing system
US5544236A (en) 1994-06-10 1996-08-06 At&T Corp. Access to unsubscribed features
US5574922A (en) 1994-06-17 1996-11-12 Apple Computer, Inc. Processor with sequences of processor instructions for locked memory updates
US5781774A (en) * 1994-06-29 1998-07-14 Intel Corporation Processor having operating modes for an upgradeable multiprocessor computer system
JP3810449B2 (ja) 1994-07-20 2006-08-16 富士通株式会社 キュー装置
US5568476A (en) 1994-10-26 1996-10-22 3Com Corporation Method and apparatus for avoiding packet loss on a CSMA/CD-type local area network using receive-sense-based jam signal
JP3169779B2 (ja) * 1994-12-19 2001-05-28 日本電気株式会社 マルチスレッドプロセッサ
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5784712A (en) * 1995-03-01 1998-07-21 Unisys Corporation Method and apparatus for locally generating addressing information for a memory access
US5701434A (en) 1995-03-16 1997-12-23 Hitachi, Ltd. Interleave memory controller with a common access queue
US5649157A (en) * 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
US5886992A (en) 1995-04-14 1999-03-23 Valtion Teknillinen Tutkimuskeskus Frame synchronized ring system and method
US5758184A (en) * 1995-04-24 1998-05-26 Microsoft Corporation System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads
US5592622A (en) * 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
JPH08320797A (ja) * 1995-05-24 1996-12-03 Fuji Xerox Co Ltd プログラム制御システム
US5828746A (en) 1995-06-07 1998-10-27 Lucent Technologies Inc. Telecommunications network
US5828863A (en) 1995-06-09 1998-10-27 Canon Information Systems, Inc. Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer
US5613071A (en) * 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5680641A (en) 1995-08-16 1997-10-21 Sharp Microelectronics Technology, Inc. Multiple register bank system for concurrent I/O operation in a CPU datapath
US5940612A (en) 1995-09-27 1999-08-17 International Business Machines Corporation System and method for queuing of tasks in a multiprocessing system
US5689566A (en) 1995-10-24 1997-11-18 Nguyen; Minhtam C. Network with secure communications sessions
US5809530A (en) 1995-11-13 1998-09-15 Motorola, Inc. Method and apparatus for processing multiple cache misses using reload folding and store merging
KR0150072B1 (ko) 1995-11-30 1998-10-15 양승택 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치
US5796413A (en) 1995-12-06 1998-08-18 Compaq Computer Corporation Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering
US5850530A (en) 1995-12-18 1998-12-15 International Business Machines Corporation Method and apparatus for improving bus efficiency by enabling arbitration based upon availability of completion data
US5699537A (en) 1995-12-22 1997-12-16 Intel Corporation Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions
AU714679B2 (en) * 1995-12-29 2000-01-06 Tixi.Com Gmbh Telecommunication Systems Process and microcomputer system for automatic, secure and direct data transfer
US5761507A (en) * 1996-03-05 1998-06-02 International Business Machines Corporation Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling
US5809235A (en) 1996-03-08 1998-09-15 International Business Machines Corporation Object oriented network event management framework
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5784649A (en) * 1996-03-13 1998-07-21 Diamond Multimedia Systems, Inc. Multi-threaded FIFO pool buffer and bus transfer control system
US5797043A (en) 1996-03-13 1998-08-18 Diamond Multimedia Systems, Inc. System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs
US6199133B1 (en) * 1996-03-29 2001-03-06 Compaq Computer Corporation Management communication bus for networking devices
KR100219597B1 (ko) 1996-03-30 1999-09-01 윤종용 씨디-롬 드라이브에서의 큐잉 제어 방법
JP3541335B2 (ja) * 1996-06-28 2004-07-07 富士通株式会社 情報処理装置及び分散処理制御方法
US5937187A (en) 1996-07-01 1999-08-10 Sun Microsystems, Inc. Method and apparatus for execution and preemption control of computer process entities
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US5745913A (en) * 1996-08-05 1998-04-28 Exponential Technology, Inc. Multi-processor DRAM controller that prioritizes row-miss requests to stale banks
US5928736A (en) * 1996-09-09 1999-07-27 Raytheon Company Composite structure having integrated aperture and method for its preparation
US5812868A (en) 1996-09-16 1998-09-22 Motorola Inc. Method and apparatus for selecting a register file in a data processing system
US6072781A (en) * 1996-10-22 2000-06-06 International Business Machines Corporation Multi-tasking adapter for parallel network applications
US5860158A (en) 1996-11-15 1999-01-12 Samsung Electronics Company, Ltd. Cache control unit with a cache request transaction-oriented protocol
US6212542B1 (en) * 1996-12-16 2001-04-03 International Business Machines Corporation Method and system for executing a program within a multiscalar processor by processing linked thread descriptors
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
US5854922A (en) 1997-01-16 1998-12-29 Ford Motor Company Micro-sequencer apparatus and method of combination state machine and instruction memory
US6256115B1 (en) * 1997-02-21 2001-07-03 Worldquest Network, Inc. Facsimile network
US5742587A (en) * 1997-02-28 1998-04-21 Lanart Corporation Load balancing port switching hub
US5905889A (en) * 1997-03-20 1999-05-18 International Business Machines Corporation Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use
US5918235A (en) * 1997-04-04 1999-06-29 Hewlett-Packard Company Object surrogate with active computation and probablistic counter
US6584525B1 (en) * 1998-11-19 2003-06-24 Edwin E. Klingman Adaptation of standard microprocessor architectures via an interface to a configurable subsystem
US6535878B1 (en) * 1997-05-02 2003-03-18 Roxio, Inc. Method and system for providing on-line interactivity over a server-client network
US6223243B1 (en) * 1997-06-12 2001-04-24 Nec Corporation Access control method with plural users having I/O commands prioritized in queues corresponding to plural memory units
US6182177B1 (en) * 1997-06-13 2001-01-30 Intel Corporation Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues
US6092158A (en) * 1997-06-13 2000-07-18 Intel Corporation Method and apparatus for arbitrating between command streams
US6067585A (en) * 1997-06-23 2000-05-23 Compaq Computer Corporation Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device
US5887134A (en) 1997-06-30 1999-03-23 Sun Microsystems System and method for preserving message order while employing both programmed I/O and DMA operations
US5938736A (en) 1997-06-30 1999-08-17 Sun Microsystems, Inc. Search engine architecture for a high performance multi-layer switch element
US6393483B1 (en) * 1997-06-30 2002-05-21 Adaptec, Inc. Method and apparatus for network interface card load balancing and port aggregation
KR100216371B1 (ko) * 1997-06-30 1999-08-16 윤종용 고장 감내형 대용량 ATM 스위치 및 2nXn 다중화스위치에서의 셀프라우팅 방법
US6247025B1 (en) * 1997-07-17 2001-06-12 International Business Machines Corporation Locking and unlocking mechanism for controlling concurrent access to objects
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6014729A (en) * 1997-09-29 2000-01-11 Firstpass, Inc. Shared memory arbitration apparatus and method
US6085294A (en) * 1997-10-24 2000-07-04 Compaq Computer Corporation Distributed data dependency stall mechanism
US6061710A (en) * 1997-10-29 2000-05-09 International Business Machines Corporation Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US5915123A (en) * 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
DE69822591T2 (de) * 1997-11-19 2005-03-24 Imec Vzw System und Verfahren zur Kontextumschaltung über vorbestimmte Unterbrechungspunkte
US6360262B1 (en) * 1997-11-24 2002-03-19 International Business Machines Corporation Mapping web server objects to TCP/IP ports
US6070231A (en) * 1997-12-02 2000-05-30 Intel Corporation Method and apparatus for processing memory requests that require coherency transactions
US5948081A (en) * 1997-12-22 1999-09-07 Compaq Computer Corporation System for flushing queued memory write request corresponding to a queued read request and all prior write requests with counter indicating requests to be flushed
JPH11203860A (ja) * 1998-01-07 1999-07-30 Nec Corp 半導体記憶装置
US6415338B1 (en) * 1998-02-11 2002-07-02 Globespan, Inc. System for writing a data value at a starting address to a number of consecutive locations equal to a segment length identifier
US6223238B1 (en) * 1998-03-31 2001-04-24 Micron Electronics, Inc. Method of peer-to-peer mastering over a computer bus
KR100280460B1 (ko) * 1998-04-08 2001-02-01 김영환 데이터 처리 장치 및 이의 복수의 스레드 처리 방법
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
US6373848B1 (en) * 1998-07-28 2002-04-16 International Business Machines Corporation Architecture for a multi-port adapter with a single media access control (MAC)
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6347344B1 (en) * 1998-10-14 2002-02-12 Hitachi, Ltd. Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor
US6212611B1 (en) * 1998-11-03 2001-04-03 Intel Corporation Method and apparatus for providing a pipelined memory controller
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US6338078B1 (en) * 1998-12-17 2002-01-08 International Business Machines Corporation System and method for sequencing packets for multiprocessor parallelization in a computer network system
US6356692B1 (en) * 1999-02-04 2002-03-12 Hitachi, Ltd. Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module
US6256713B1 (en) * 1999-04-29 2001-07-03 International Business Machines Corporation Bus optimization with read/write coherence including ordering responsive to collisions
US6427196B1 (en) * 1999-08-31 2002-07-30 Intel Corporation SRAM controller for parallel processor architecture including address and command queue and arbiter
US6665699B1 (en) * 1999-09-23 2003-12-16 Bull Hn Information Systems Inc. Method and data processing system providing processor affinity dispatching
US6529983B1 (en) * 1999-11-03 2003-03-04 Cisco Technology, Inc. Group and virtual locking mechanism for inter processor synchronization
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
US6307789B1 (en) * 1999-12-28 2001-10-23 Intel Corporation Scratchpad memory
US6324624B1 (en) * 1999-12-28 2001-11-27 Intel Corporation Read lock miss control and queue management
US6560667B1 (en) * 1999-12-28 2003-05-06 Intel Corporation Handling contiguous memory references in a multi-queue system
US6584522B1 (en) * 1999-12-30 2003-06-24 Intel Corporation Communication between processors

Also Published As

Publication number Publication date
WO2001016769A9 (en) 2002-09-12
US20040162933A1 (en) 2004-08-19
CN1399739A (zh) 2003-02-26
DE60010907D1 (de) 2004-06-24
CA2391792C (en) 2004-12-07
ATE267420T1 (de) 2004-06-15
EP1214660B1 (en) 2004-05-19
US6728845B2 (en) 2004-04-27
US6427196B1 (en) 2002-07-30
DE60010907T2 (de) 2005-07-21
EP1214660A1 (en) 2002-06-19
CA2391792A1 (en) 2001-03-08
AU6646100A (en) 2001-03-26
WO2001016769A1 (en) 2001-03-08
HK1053728A1 (en) 2003-10-31
US20030145159A1 (en) 2003-07-31
US7305500B2 (en) 2007-12-04

Similar Documents

Publication Publication Date Title
CN1192314C (zh) 并行处理器结构的sram控制器
CN1185592C (zh) 并行处理器结构
CN1296818C (zh) 用于多线程并行处理器的指令
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1387641A (zh) 并行处理器中的多线程执行
CN1199109C (zh) 通过重排序存储器请求提高总线利用率的存储器控制器
CN1205553C (zh) 分优先级访问外部装置的设备
CN1282925C (zh) 利用页标志寄存器跟踪存储器装置内物理页的状态的方法
CN100342349C (zh) 错误推测之后的指令再执行的流水线外部跟踪缓冲器
CN1175341C (zh) 异步更新共享资源的接口系统和方法
CN1357121A (zh) 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法
CN1285064A (zh) 进行无序多线程执行的加载和存储指令排序系统
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN1319210A (zh) 可配置的硬件块的配置方法
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1749955A (zh) 控制处理器和协处理器间的数据传输的运算处理装置
CN1934543A (zh) 高速缓冲存储器及其控制方法
CN1967506A (zh) 高速缓存存储器处理器中的合并入口
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和系统
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1243311C (zh) 实现重叠操作的方法和系统
CN1504902A (zh) 在存储器部件之间保持数据一致性的方法和系统
CN1311357C (zh) 通用资源访问控制器
CN101076787A (zh) 联想存储器装置
CN1504904A (zh) 存储器克隆操作期间保护高速缓冲存储器线的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CI01 Publication of corrected invention patent application

Correction item: Inventor

Correct: 5 people were invented, an increase of fifth

False: The invention was made up of 4 people

Number: 9

Volume: 19

CI02 Correction of invention patent application

Correction item: Inventor

Correct: Inventor for 5 people, increase the fifth inventor:Rosenbluth Mark

False: The invention was made up of 4 people

Number: 9

Page: The title page

Volume: 19

COR Change of bibliographic data

Free format text: CORRECT: INVENTOR; FROM: INVENTOR IS 4 PEOPLE TO: INVENTOR 5 PEOPLE, ADD THE 5TH INVENTOR: ROSENBLUTH MARK

ERR Gazette correction

Free format text: CORRECT: INVENTOR; FROM: INVENTOR IS 4 PEOPLE TO: INVENTOR 5 PEOPLE, ADD THE 5TH INVENTOR: ROSENBLUTH MARK

C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20050309

Termination date: 20170817