CN1402845A - 多线程并行处理器结构中所用的微引擎的存储器引用指令 - Google Patents

多线程并行处理器结构中所用的微引擎的存储器引用指令 Download PDF

Info

Publication number
CN1402845A
CN1402845A CN00815412A CN00815412A CN1402845A CN 1402845 A CN1402845 A CN 1402845A CN 00815412 A CN00815412 A CN 00815412A CN 00815412 A CN00815412 A CN 00815412A CN 1402845 A CN1402845 A CN 1402845A
Authority
CN
China
Prior art keywords
instruction
field
sram
command
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN00815412A
Other languages
English (en)
Other versions
CN100351781C (zh
Inventor
G·沃尔瑞奇
M·J·艾迪莱塔
W·威勒
D·伯恩斯坦因
D·胡伯
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 CN1402845A publication Critical patent/CN1402845A/zh
Application granted granted Critical
Publication of CN100351781C publication Critical patent/CN100351781C/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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

Abstract

一种计算机指令包括一命令指令,该命令指令在线程的关联文本无效时对微处理器中执行的线程所共享的存储器中的一个地址发出一存储器引用。

Description

多线程并行处理器结构中所用的微引擎的存储器引用指令
技术领域
本发明涉及计算机处理器的存储器引用(reference)指令。
背景技术
并行处理是计算过程中并发事件的信息处理的一种有效的方式。与串行处理对比而言,并行处理请求并行执行计算机中的许多程序。在并行处理器的关联文本(context)中,并行性涉及同时做不只一件事。不同于在一个单一的站连续执行所有任务的串行范例或在专用站执行任务的流水线程机器,利用并行处理,提供了许多能够执行所有任务的站。也就是说,一般而言,所有或许多站同时并独立地处理问题的相同或共同的元素。某些问题适合于通过应用并行处理来解决。
附图概述
在附图和以下的描述中,陈述了本发明的一个或多个实施例的细节。通过描述、附图和权利要求,本发明的其他特点、目的和优点将一目了然。
本发明的前述特点和其他方面将通过附图来进一步加以详细的描述,其中:
图1是使用基于硬件的多线程处理器的一种通讯系统的方框图。
图2是图1中基于硬件的多线程处理器的详细的方框图。
图3是图1和图2的基于硬件的多线程处理器中所使用的微引擎功能单元的方框图。
图4是图3的微引擎中的流水线程的方框图。
图5是SRAM地址空间的方框图。
图6是SRAM/写命令的方框图。
图7是“压入/弹出命令”的方框图。
图8是“bit_WR命令”的一种“indirect_ref格式”的方框图。
图9是“读/写命令”的indirect_ref的一种格式的方框图。
图10是T_FIFO_WR命令的一种indirect_ref“格式”的方框图。
图11是R_FIFO_RD命令的一种indirect_ref“格式”的方框图。
图12是“读/写命令”的indirect_ref“格式”的一种格式的方框图。
图13是bit_WR命令的一种indirect_ref“格式”的方框图。各幅图中类似的参考符号表示类似的元素。
具体实施方式
参考图1,通讯系统10包括一个并行的、基于硬件的多线程处理器12。基于硬件的多线程处理器12被耦合到一个总线(例如,PCI总线14)、存储器系统16和第二个总线18。系统10对于可以被分成多个并行子任务或功能的任务而言特别有用。基于硬件的多线程处理器12对于面向带宽(而非面向等待时间)的任务而言尤其有用。基于硬件的多线程处理器12具有多个微引擎22,每个微引擎具有可以同时运行和独立执行任务的多个硬件受控线程。
基于硬件的多线程处理器12也包括一个中央控制器20,该中央控制器20帮助加载对基于硬件的多线程处理器12的其他资源的微码控制,并执行其他通用计算机类型功能,例如,处理协议、异常、对数据分组处理(其中,例如在边界条件下微引擎22传递数据分组,以获得更加详细的处理)的额外支持。在一个实施例中,处理器20是一个基于“Strong Arm@”(Arm是英国ARM有限公司的商标)的结构。通用微处理器20拥有一个操作系统。通过该操作系统,处理器20可以调用各种功能来操作微引擎22a-22f。处理器20可以使用任何被支持的操作系统,较佳地是使用实时操作系统。对于作为“Strong Arm”结构来被执行的核心处理器20而言,可以使用微软NT实时、VXWorks与微CUS、互联网上可用的免费软件操作系统等各种操作系统。
每个功能微引擎(微引擎)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 16a中并从那里被取出。微引擎22a-22f可以执行对SDRAM控制器26a或SRAM控制器16b的存储器引用指令。
硬件多线程技术的优点可以由SRAM或SDRAM存储器访问来说明。例如,来自微引擎的由thread_0请求的SRAM访问将使SRAM控制器26b开始对SRAM存储器16b进行访问。SRAM控制器26b控制对SRAM总线的仲裁,访问SRAM 16b,从SRAM 16b取出数据,并将数据返回到提出请求的微引擎22a-22f。在SRAM访问期间,如果微引擎(例如,微引擎22a)只有一个单一的线程可操作,则该微引擎将处于休眠状态,直到数据从SRAM 16b被返回。通过使用在每个微引擎22a-22f内的硬件关联文本交换,硬件关联文本交换使具有唯一程序计数器的其他关联文本能够在那个相同的微引擎内执行。这样,另一个线程(例如,thread_1)可以运作,而第一个线程(例如,thread_0)正在等待读取数据返回。在执行期间,thread_1可以访问SDRAM存储器16a。thread_1操作SDRAM单元16a,thread_0正在操作SRAM单元16b,而一个新的线程(例如,thread_2)现在可以在微引擎22a中进行操作。thread_2可以操作一定数量的时间,直到它需要访问存储器或执行其他某项等待时间长的操作(例如,对总线接口进行访问)。所以,处理器12可以同时拥有总线操作、都正在被完成或由微引擎22a操作的SRAM操作和SDRAM操作,并且多拥有一个线程来处理数据路径中的更多工作。
硬件关联文本交换也使各项任务的完成同步化。例如,两个线程可以找到相同的共享资源(例如,SRAM 16b)。这些分开的功能单元(例如,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(FIFO总线)18。FBUS接口28负责控制并将处理器12连接到FBUS 18。FBUS 18是被用来连接到“媒体访问控制器(MAC)”设备(例如,10/100BaseT八进制MAC 13a)的64位宽FIFO总线。
处理器12包括第二个接口(例如,PCI总线接口24),该接口将位于PCI 14总线上的其他系统成分耦合到处理器12。PCI总线接口24将高速数据路径24a提供给存储器16(例如,SDRAM存储器16a)。通过PCI总线接口24,经由直接存储器访问(DMA)传送,通过PCI总线14,数据可以从SDRAM 16a被迅速移动。基于硬件的多线程处理器12支持图象传送。基于硬件的多线程处理器12可以使用多个DMA通道,所以,如果DMA转移的一个目标很忙,则DMA通道中的另一个通道可接管PCI总线14来向另一个目标传递信息,从而维持处理器12的高效率。此外,PCI总线接口24支持目标与主控操作。在目标操作中,总线14上的从属设备通过读、写来访问用作目标操作的从动装置的SDRAMs。在主控操作中,处理器核心20将数据直接发送到PCI接口24,或直接从PCI接口24接收数据。
每个功能单元22被耦合到一个或多个内部总线。如下文所述,内部总线是双32位总线(即,一个总线用于读取,一个总线用于写入)。基于硬件的多线程处理器12也被构造成使处理器12中的内部总线的带宽总和超过被耦合到处理器12的外部总线的带宽。处理器12包括一个内部核心处理器总线32(例如,“ASB高级系统总线(ASB)”),该总线将处理器核心20耦合到以下描述的存储控制器26a、26c和ASB转换器30。ASB总线32是与“Strong Arm”处理器核心20并用的所谓“高级微控制器总线结构(AMBA)”总线的一个子集。AMBA是一个开放标准的芯片上的总线规范,它详述了构成“芯片上系统(SoC)”的功能块的互连和管理的策略。处理器12也包括一个专用总线34,该总线将微引擎单元22耦合到SRAM控制器26b、ASB转换器30和FBUS接口28。存储器总线38将存储控制器26a和26b耦合到总线接口24、28和包括用于引导操作的快闪只读存储器16c等的存储器系统16。
参考图2,每个微引擎22a-22f包括一个仲裁器,该仲裁器检查标记,以确定将被操作的可用的线程。来自微引擎22a-22f中的任何微引擎的任何线程可以访问SDRAM控制器26a、SDRAM控制器26b或FBUS接口28。存储控制器26a和26b都包括多个队列,以存储未完成的(outstanding)存储器引用请求。这些队列或者维持存储器引用的顺序,或者安排存储器引用,以便优化存储器带宽。例如,如果thread_0不依赖于thread_1或与thread_1没有关系,则thread_1和thread_0没有理由打乱次序就不能完成它们对SRAM单元16b的存储器引用。微引擎22a-22f向存储控制器26a和26b发出存储器引用请求。微引擎22a-22f使存储器子系统26a和26b充满足够的存储器引用操作,使得存储器子系统26a和26b成为处理器12操作的瓶颈。
如果存储器子系统16充满本质上独立的存储器请求,则处理器12可以执行存储器引用排序(sorting)。存储器引用排序改善了可实现的存储器带宽。如下文所述,存储器引用排序减少了访问SRAM 16b时发生的停滞时间或泡影。利用对SRAM 16b的存储器引用,在读与写之间切换信号线上的电流方向产生了等待电流在将SRAM 16b耦合到SRAM控制器26b的导体上稳定的泡影或停滞时间。
也就是说,驱动总线上的电流的驱动器需要在变化的状态之前达到稳定。这样,由读取后跟写入的的重复周期会降低峰值带宽。存储器引用排序允许处理器12组织对存储的引用,以便长字(longword)符串的读取后面可以跟随长字符串的写入。这可以被用来使流水线程中的停滞时间减到最小,以便有效地实现更接近于最大的可用带宽。引用排序有助于维持并行硬件关联文本线程。在SDRAM 16a上,引用排序允许隐藏从一个排(bank)到另一个排的预先充电。尤其是,如果存储器系统16b被组织成一个奇数排和一个偶数排,在处理器正在操作奇数排的同时,则存储控制器可以开始给偶数排预先充电。如果存储器引用在奇数排与偶数排之间交替改变,则可以进行预先充电。通过命令存储器引用交替改变对相反排的访问,处理器12改善了SDRAM带宽。此外,可使用其他的优化。例如,可以使用合并优化(其中,可被合并的操作在存储器访问之前被进行合并)、开页优化(其中,通过检查地址,存储器的打开也门不被重新打开)、链锁(下文将加以描述)和刷新机制。
FBUS接口28支持MAC设备支持的每个端口的“发送与接收”标记,以及指出服务何时被保证的“中断”标记。FBUS接口28也包括一个控制器28a,该控制器执行来自FBUS 18的进入数据分组的头部(head)处理。控制器28a抽取数据分组的头部,并执行SRAM 16b中的可编微程序的源/目的地/协议散列查找(用于地址平滑)。如果散列没有成功地解决,则数据分组的头部被发送到处理器核心20作额外的处理。FBUS接口28支持以下的内部数据处理:
FBUS单元    (共享的总线SRAM)    到/从微引擎。
FBUS单元    (经由专用总线)      从SDRAM单元写入。
FBUS单元    (经由M总线)         读到SDRAM。
FBUS 18是标准工业总线,包括一个数据总线(例如,64位宽以及用于地址的边带控制和读/写控制)。FBUS接口28通过使用一系列输入和输出FIFOs29a-29b来提供输入大量数据的能力。从FIFOs 29a-29b中,微引擎22a-22f从其取出数据或命令SDRAM控制器26a将数据从接收FIFO(其中,数据来自总线18上的一个设备)移入FBUS接口28。经由直接存储器访问,数据可以通过存储控制器26a被发送SDRAM存储器16a。同样,经由FBUS接口28,微引擎可以将数据从SDRAM 26a移到接口28,再移出到FBUS 18。
数据功能在各个微引擎22中被分配。与SRAM 26a、SDRAM 26b和FBUS 28的连通性是经由命令请求。命令请求可以是存储器请求或FBUS请求。例如,命令请求可以将数据从位于微引擎22a中的一个寄存器移到一个共享的资源,例如,SDRAM位置、SRAM位置、快闪存储器或某个MAC地址。这些命令被发送出去到每个功能单元和共享资源。但是,共享资源不需要维持数据的局部缓冲。而是共享资源访问位于微引擎22a-22f内的分布式数据。这使微引擎22a-22f能够对数据进行局部访问,而不是仲裁总线上的访问和总线的冒险连接。利用这个特点,就有0周期延迟用于等候微引擎22a-22f的内部数据。
耦合这些共享资源(例如,存储控制器26a和26b)的数据总线(例如,ASB总线30、SRAM总线34和SDRAM总线38)的带宽足够,以便没有内部瓶颈。为了避免瓶颈,处理器12有一个带宽要求:每个功能单元被提供至少是内部总线的最大带宽两倍的带宽。例如,SDRAM 16a可以按83MHz来运行64位宽的总线。SRAM数据总线可以具有分开的读、写总线(例如,可以是按166MHz运行的32位宽的读总线和按166 MHz运行的32位宽的写总线)。本质上,按166MHz运行的64位实际上是SDRAM的带宽的两倍。
核心处理器20也可以访问共享资源。核心处理器20经由总线32与SDRAM控制器26a、总线接口24和SRAM控制器26b具有直接的通讯。但是,为了访问微引擎22a-22f和位于微引擎22a-22f中的任何微引擎处的传送寄存器(transfer register),核心处理器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位桶(barrel)移位支持。这个RISC核心50是一个标准“Strong Arm@”结构,但是,由于性能的原因,它用五级流水线程来实现。处理器核心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。控制器逻辑72包括指令解码器73和程序计数器(PC)单元72a-72d。四个微程序计数器72a-72d被保持在硬件中。微引擎22f也包括关联文本事件切换逻辑74。关联文本事件逻辑74从每个共享资源(例如,SRAM 26a、SRAM 26b或处理器核心20、控制与状态寄存器等)接收消息(例如,SEO_#_EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_RESPONSE;以及ASB_EVENT_RESPONSE)。这些消息提供关于是否已经完成被请求的功能的信息。根据由线程请求的功能是否已经完成和已发出完成信号,线程需要等候那个完成信号;如果使线程能够操作,则该线程被放置在可用的线程列表(未示出)上。微引擎22f最多可以具有4个可用线程。
除了属于执行线程本地的事件信号以外,微引擎22a-22f使用全局的信令状态。利用信令状态,执行线程可以将信号状态播送到所有的微引擎22a-22f(例如,“接收请求可用(RRA)”信号),微引擎22a-22f中的任何和所有的线程可以根据这些信令状态而分支转移。这些信令状态可被用来确定资源的可用性或资源是否应当用于服务。
关联文本事件逻辑74对四(4)个线程进行仲裁。在一个实施例中,该仲裁是一种轮流机制。其他技术可被使用,包括优先级队列或加权的公平队列。微引擎22f也包括一个执行箱(EBOX)数据路径76,该路径包括一个算术逻辑单元(ALU)76a和通用寄存器装置76b。ALU 76a执行算术与逻辑功能,以及移位功能。寄存器装置76b具有相对较多数量的通用寄存器。在一个实施例中,第一个排--排A中有64个通用寄存器,第二个排--排B中也有64个。通用寄存器被设置为窗口,以便它们可相对地和绝对地寻址。
微引擎22f也包括一个写传送寄存器堆栈78和一个读转移堆栈80。这些寄存器78和80也被分为窗口,以便它们可相对地和绝对地寻址。写传送寄存器堆栈78是到一个资源的写数据所在之处。同样,读寄存器堆栈80用于来自共享资源的返回数据。在数据达到之后或在数据达到的同时,来自各个共享资源(例如,SRAM控制器26a、SDRAM控制器26b或核心处理器20)的一个事件信号将被提供给关联文本事件仲裁器74,然后,该关联文本事件仲裁器将警告线程:数据可用或已经被发送。传送寄存器排78和80通过一个数据路径被连接到执行箱(EBOX)76。在一个实施例中,读传送寄存器拥有64个寄存器,写传送寄存器拥有64个寄存器。
参考图4,微引擎数据路径维持一个5级微流水线程82。这个流水线程包括微指令字的查找82a、寄存器文件地址的形成82b、来自寄存器文件的操作数的读取82c、ALU移位或比较操作82d,以及将结果写回寄存器82e。通过将一个写回数据旁路提供到ALU/移位器单元内,并且通过假设寄存器被作为寄存器文件(而不是RAM)来实现,微引擎22f可以执行同时的寄存器文件的读和写,这完全隐藏了写操作。
SDRAM接口26a将信号返回给对读取提出请求的微引擎(指出是否发生有关读取请求的一致校验(parity)错误)。微引擎微码负责当微引擎使用任何返回数据时核查SDRAM 16a读取Parity(一致校验)标记。一旦核查标记,如果它被设置,则在其上的分支转移的动作就将它清除。当使SDRAM 16a能够核查时,只发送Parity标记,SDRAM 16a得到一致校验保护。只有微引擎22和PCI单元14是被通知一致校验错误的请求器(requestors)。所以,如果处理器核心20或FIFO 18请求一致校验保护,则微引擎协助实现该请求。微引擎22a-22f支持有条件的分支转移。
指令集也包括发出存储器引用给“静态随机存取存储器(SRAM)”的一个指令。
将存储器引用发给SRAM的指令的格式是sram[sram_cmd,$sram_xfer_reg,source_op1,source_op2,ref_count_or_queue_num_or_bit_op],optional_token。每个字段的描述如下所述。
“sram_cmd”字段指将在SRAM上被执行的操作。操作包括bit_wr、读取、read_lock、写入、write_unlock、解锁、压入和弹出。
“bit_wr”操作设置或清除一个SRAM长字中的用户指定位。“read”操作从SRAM读到SRAM传送寄存器。“read_lock”操作锁定存储器,然后再对它进行读取。如果存储器已经被锁定,则一直等到它被解锁。读取锁定操作总是要求“ctx_swap”任选标记(token)。
“write”操作从SRAM传送寄存器写到SRAM。“write_unlock”操作执行写入并为规定的地址解锁。“解锁”操作为规定的地址解锁,而不执行读或写。
“压入”操作将由地址规定的一个列表的元素压入规定的堆栈中。“弹出”操作弹出由来自规定的堆栈的地址所规定的一个列表的元素。
“$sram_xfer_reg”字段指出是否使用读取、read_lock、写入或write_unlocksram_cmd参数,这个传送寄存器的内容是一套邻近的寄存器的开端,这些寄存器分别接收或提供有关读或写操作的SRAM数据。SRAM传送寄存器的名称总是从一个$符号开始。如果使用解锁sram_cmd参数,则这个寄存器是没有意义的,并且使用“--”符号来代替寄存器名称。如果使用弹出sram_cmd参数,则这个寄存器包含执行指向列表的指针,该列表从ref_count_orqueue_num所规定的队列中被除去。如果压入被指定为sram_cmd参数,使用“--”符号,则这个寄存器没有意义。如果使用bit_wr sram_cmd参数,则这个寄存器包含位掩码,该位掩码选择应该设置或清除哪些位。关于set_and_set_bits和set_and_clear_bits选项,这个寄存器还按原样返回设置或清除位之前存在的原始数据。
“source_op1”和“source_op2”字段指有关关联文本的寄存器或范围从+31到0的5位零填充最近数据。这些字段被加在一起,以构成对SRAM存储空间的一个长字地址。关于压入sram_cmd参数,总和规定了将被压入队列中的地址。如果弹出被指定为sram_cmd参数,则这个寄存器没有意义,并且在这种情况下使用source_op1和source_op2的虚拟参数。
“ref_count_or_queue_num_or_bit_op”字段指出是否使用读取、read_lock、写入或write_unlocksram_cmd参数,它规定用这一操作要引用的邻近SRAM长字的数量。如果计数>1,则为每个后来的引用隐含地递增SRAM地址。如果read_lock或write_unlock命令被规定为ref_count>1,则ref_count只是指被转移的存储字的数量,而不是指被锁定或解锁的地址的数量。每个引用的被锁定或解锁的地址的数量总是1。如果使用解锁sram_cmd参数,则这个寄存器没有意义,总是使用1。如果使用压入或弹出sram_cmd参数,则这规定了8个压入/弹出队列中的一个队列。有效的队列号是0~7。如果使用bit_wrsram_cmd参数,则必须使用以下参数中的一个参数:set_bits、clear_bits、set_and_set_bits或set_and_clear_bits。set_bits和clear_bits被用来设置或清除使用被指定的位掩码的地址处的位。set_and_set_bits和set_and_clear_bits也被用来设置或清除位,但是,按原样返回操作之前存在的原始数据。
“sig_done”参数指出:当引用完成时,用信号通知正在提供或吸收存储数据的对应的微引擎/线程对。不与ctx_swap并用。
“ctx_swap”参数指出:当发出存储器引用时,交换出当前的线程执行,以便让另一个线程运行。不与sig_done并用,总是为读取锁定命令所要求。
“defer[1]”参数与ctx_swap选项并用;它指定:一项指令间在这一引用之后并在关联文本被交换之前被执行,且不与sig_done并用。
“ordered”参数将这个SRAM引用放入有序队列。有序队列bl使用有序任选标记的引用的执行顺序。例如,如果一个线程发出两个写入(在第二个引用上具有sig_done任选标记),则两个引用将需要是有序的,以确保第二个引用在第一个引用后结束。不与optimize_mem或优先级并用。如果既不指定有序,也不指定optimize_mem,则默认值成为有序的。
“优先级”参数将这个SRAM引用放入“优先级”队列。与其他存储器引用相比,“优先级”队列为这个存储器引用提供更高的优先级。不与有序或optimize_mem并用。如果既不指定优先级,也不指定optimize_mem,则默认值成为有序的。
通过自动地将SRAM引用放入“读取”或“有序”队列,“optimize_mem”参数优化存储器带宽。根据操作是读取还是写入,来选择“读取”或“有序”队列。这会导致按不同于发出引用的顺序的一种顺序来执行引用。不与有序或优先级并用。如果既不指定优先级,也不指定optimize_mem,则默认值成为有序的。
“indirect_ref”参数指出,首要(overriding)限定符或额外限定符与这个引用有关。在前面的微字期间,这些限定符由ALU输出。限定符的格式取决于SRAM命令。如以下插图所示,读/写、压入/弹出和bit_wr有不同的格式。
参考图5,示出SRAM地址空间的方框图。参考图6,示出SRAM/写命令的方框图,其中:位       字段           说明31        OV            如果被设置,则UENG ADDR字段首要由RAM指令隐含
                    的默认微引擎地址,它是发出引用的微引擎。30:28    UENG ADDR     指定与存储器引用有关的微引擎。如果位[31]=0,则
                    这个字段任意。有效的UENG ADDR值是0~5。27        OV            如果被设置,则XADD字段首要由SRAM指令隐含的默
                    认传送寄存器地址。26        ABS           如果被设置,则使微引擎传送寄存器能够进行绝对寻
                    址。如果位[27](OV)被设置,则这个位应该总是被设
                    置。25:21    XADD          绝对的传送寄存器地址。有效的地址是:关联文本0
                    的0-7八个传送寄存器。关联文本1的8-15八个传送
                  寄存器。关联文本2的16-23八个传送寄存器。关联
                  文本3的24-31八个传送寄存器。20        OV          如果被设置,则REF CNT字段首要由SRAM指令指定的
                  ref_count。19:16    REF CNT     将被转移到SRAM或从SRAM被转移的长字的数量。有
                  效的REF CNT值是0~7,其中,长字的数量=REF CNT+1。15        OV          如果被设置,则“字节掩码”字段首要由SRAM指令隐
                  含的0xFF的默认字节掩码。14:11    RES         被保留。当读取时,返回0。10:7     字节掩码    “字节掩码”允许在被寻址的SRAM长字内进行对齐的
                  字节写入操作。被写入的这些字节由字节掩码指定。
                  关于字节掩码中的每个位,1的值使写入能够发生在
                  对应的字节位置中,0的值保留以前存在的值。最低
                  位对应于最右边的字节;最高位对应于最左边的字节。
                  字节掩码(而不是默认(0xF))请求SRAM控制器执行读
                  取-修改-写入操作,这会影响性能。6:3      RES         被保留。当读取时,返回0。2:       OV          如果被设置,则CTX字段首要由SRAM指令隐含的默认
                  关联文本。1:0      CTX         指定与存储器引用有关的关联文本。如果位[2]=0,则
                  这个字段任意。有效的CTX值是0~3。
参考图7,示出压入/弹出命令的方框图,其中:位      字段          说明31      OV            如果被设置,则UENG ADDR字段首要由SRAM命令隐含
                  的默认微引擎地址,它是发出引用的微引擎。30:28  UENG ADDR     指定与存储器引用有关的微引擎。如果位[31]=0,则
                  这个字段任意。有效的UENG ADDR值是0~5。27      OV            如果被设置,则XADD字段首要由SRAM指令隐含的默
                  认传送寄存器地址。26      ABS          如果被设置,则使微引擎传送寄存器能够进行绝对寻
                 址。如果位[27](OV)被设置,则这个位应该总是被设
                 置。25:21  XADD         绝对的传送寄存器地址。有效的地址是:关联文本0
                 的0-7八个传送寄存器。关联文本1的8-15八个传送
                 寄存器。关联文本2的16-23八个传送寄存器。关联
                 文本3的24-31八个传送寄存器。20      OV           如果被设置,则REF CNT字段首要由SRAM指令指定的
                 ref_count。19      RES          被保留。当读取时,返回0。18:16  列表REG      指定8个压入/弹出寄存器中的一个压入/弹出寄存
                 器。有效的“列表REG”值是0~7。15:3   RES          被保留。当读取时,返回0。2:     OV           如果被设置,则CTX字段首要由SRAM指令隐含的默认
                 关联文本。1:0    CTX          指定与存储器引用有关的关联文本。如果位[2]=0,则
                 这个字段任意。有效的CTX值是0~3。
参考图8,示出“bit_WR命令”的“indirect_ref格式”的方框图,其中:位     字段          说明31      OV           如果被设置,则UENG ADDR字段首要由SRAM命令隐含
                 的默认微引擎地址,它是发出引用的微引擎。30:28  UENG ADDR    指定与存储器引用有关的微引擎。如果位[31]=0,则
                 这个字段任意。有效的UENG ADDR值是0~5。27      OV           如果被设置,则XADD字段首要由SRAM指令隐含的默
                 认传送寄存器地址。26      ABS          如果被设置,则使微引擎传送寄存器能够进行绝对寻
                 址。如果位[27](OV)被设置,则这个位应该总是被设
                 置。25:21 XADD          绝对的传送寄存器地址。有效的地址是:关联文本0
                  的0-7八个传送寄存器。关联文本1的8-15八个传送
                  寄存器。关联文本2的16-23八个传送寄存器。关联
                  文本3的24-31八个传送寄存器。20        OV          如果被设置,则TS和ST字段首要由SRAM指令指定的
                  位操作。19:18    RES         被保留。当读取时,返回0。17        TS          当被设置时,指定读取数据在写入操作之前被返回,
                  以便可以测试数据。16        ST          指定操作是被设置(ST=1)还是清除(ST=0)。15:3     RES         被保留。当读取时,返回0。2:       OV          如果被设置,则CTX字段首要由SRAM指令隐含的默认
                  关联文本。1:0      CTX         指定与存储器引用有关的关联文本。如果位[2]=0,则
                  这个字段任意。有效的CTX值是0~3。
SRAM指令的几个例子如下所述。
在一个例子中,sram[写,$xfer7,tempa,tempb,1],optimize_mem指示将SRAM传送寄存器$xfer7的关联文本写到由tempa+tempb指定的地址处的存储位置。通过将这个引用放在“读取”或“顺序”队列中,来优化存储器。
在一个例子中,sram[读取,$xfer1,tempa,0x15,4],优先级,ctx_swap,defer[1]immed[final_queue,0]将由temp+0x15指定的地址处的四个长字存储位置读入在$xfer1开始的邻近的SRAM传送寄存器。在执行下一个指令之后,将引用放在优先级队列中并交换出关联文本。
在另一个例子中,sram[弹出,$xfer2,--,--,4],optimize_mem,ctx_swap,defer[1]1d_field[protocol_group,0110,$$xfer0,>>8]。从队列号4中弹出指示器,并将它返回SRAM传送寄存器$xfer2。通过将这个引用放在“读取”或“有序”队列中来优化存储器,并且在执行下一个指令(1d_field)之后交换出关联文本。source_op1和source_op2的--符号指出,这些操作数不应用于弹出命令。
在另一个例子中,sram[压入,--,head_offset,sram_buffer_descriptor_base,4]。将其值由head_offset+sram_buffer_descriptor_base指定的指示器压入队列4上。$sram_xfer_reg的--符号指出,这个传送寄存器与压入命令无关。
在另一个例子中,sram[read_lock,$xfer6,queue_descriptor_addr,0,2],optimize_mem,ctx_swap。锁定由queue_descriptor_addr+0指定的位置处的SRAM存储器,并且将存储位置和下一个邻近的位置读入从$xfer6开始的邻近的SRAM传送寄存器。通过将这个引用放在“读取”或“有序”队列中,来优化存储器,并且交换出关联文本。
在一个例子中,[write_unlock,$xfer1,queue_descriptor_addr,0,2],ctx_swap,defer[1]alu[tempa,--,b,@sram_counter_base]。为由queue_descriptor_addr+0指定的位置处的SRAM存储器解锁,并且将从$xfer6开始的两个邻近的SRAM传送寄存器写入SRAM存储位置和下一个邻近的位置。在执行下一个指令(ALU)之后,交换出关联文本。这个引用被放入默认(“有序”)队列。
在另一个例子中,sram[解锁,$xfer],queue_descriptor_addr,0,2],ctx_swap,defer[1]ALU[tempa,--,b,@sram_counter_base]。为由queue_descriptor_addr+0指定的位置处SRAM存储器解码。在执行下一个指令(ALU)之后,交换出关联文本。
在一个例子中,sram[bit_wr,$xfer5,tempa,0,set_bits]。设置SRAM传送寄存器$xfer中的位掩码所指定的位,该SRAM传送寄存器$xfer在由tempa+0所指定的SRAM存储器地址处。
在另一个例子中,sram[bit_wr,$xfer5,tempa,0,set_and_clear_bits]。清除由SRAM传送寄存器$xfer5中的位掩码所指定的位。该SRAM传送寄存器$xfer5在由tempa+0所指定的SRAM存储器地址处。将这个变化之前的那个位置处的全部32位数据返回到SRAM传送寄存器$xfer5,以便可以测试这些位。
在另一个例子中,sram[读取,$xfer1,tempa,0,1],有序/引用1sram[读取,$xfer2,tempb,0,1],optimize_mem/引用2sram[读取,$xfer3,tempc,0,1],有序/引用3。发出三个SRAM引用,并且一旦发出引用3,就交换出关联文本。一旦完成引用3,就唤醒关联文本。由于引用1与引用3整齐有序,因此,当关联文本激活时,保证完成引用1。引用2不是有序的,所以,不保证它已经完成。
计算机指令结构也包括将存储器引用发出到“同步动态随机存取存储器(SDRAM)”的一个指令。SDRAM指令的格式是:
sdram[sdram_cmd,$$sdram_xfer_reg,source_op1,source_op2,ref_count],optional_token
其中,每个字段如下所述。
“sdram_cmd”字段代表将在SDRAM上执行的操作,即,“read”命令从SDRAM读到SDRAM传送寄存器。“write”命令从SDRAM传送寄存器写到SDRAM。以下将更加全面地描述,“r_fifo_rd”命令从接收FIFO读到SDRAM,并且只是要求indirect_ref任选标记。“t_fifo_wr”命令从SDRAM写到发送FIFO,并且也总是要求indirect_ref任选标记。
“$$sdram_xfer_reg”字段是一个寄存器,它是分别接收或提供有关读或写操作的SDRAM数据的一组邻近的寄存器的开端。由于每个ref_count是指四倍字长,因此,两个邻近的传送寄存器与每个ref_count有关。SDRAM传送寄存器名称总是从一个$$符号开始。
“source_op1”和“source_op2”字段是有关关联文本的寄存器或范围从+31到0的5位零填充最近数据。这些操作数被加在一起,以便构成SDRAM地址。
“ref_count”字段代表将由该操作引用的邻近的SDRAM四倍字长的数目。如果ref_count>1,则为每个后来的引用隐含递增SDRAM地址。有效的ref_count值是1~4。关于大于4的ref_count值,使用indirect_ref任选标记。
“optional_token”是包含以下参数中的一个参数的用户可任选的字段。“sig_done”参数指出,当引用完成时,用信号通知正在提供或吸收存储数据的对应的微引擎/线程对。它不与ctx_swap或defer[1]参数并用。
“ctx_swap”参数指出,当发出存储器引用时,交换出当前的线程执行,以便让另一个线程运行。不与chain_ref和sig_done并用。
“chain_ref”参数指出,来自这个微引擎/线程对的下一个SDRAM引用将由紧跟当前的引用的SDRAM单元来处理。直到链完成,SDRAM单元才会接受来自其他微引擎/线程对的引用。它不与ctx_swap或延期参数并用。一旦链开始,微引擎/线程对直到链完成才可以执行分支转移指令。
“defer[1]”参数与ctx_swap并用,并规定在关联文本被交换之前,将在该引用后执行一个指令。它不与chain_ref或sig_done参数并用。
“有序”参数将这个SDRAM引用放入一个有序队列。该有序队列保存使用有序任选标记的引用的执行顺序。例如,如果一个线程发出两个写入(在第二个引用上具有sig_done任选标记),则两个引用将需要是有序的,以确保第二个引用在第一个引用后结束。不与optimize_mem或优先级并用。如果既不指定优先级,也不指定optimize_mem,则默认值成为有序的。
“优先级”参数将这个SDRAM引用放入优先级队列。与其他存储器引用相比,优先级队列为这个存储器引用提供更高的优先级。不与有序或optimize_mem并用。如果既不指定优先级,也不指定optimize_mem,则默认值成为有序的。
通过自动地将SDRAM引用放入“奇数”或“偶数”队列,“optimize_mem”参数优化存储器带宽。根据地址引用数据是在奇数还是偶数SDRAM排中,来选择“奇数”或“偶数”队列。这会导致按不同于发出引用的顺序的一种顺序来执行引用。不与有序或优先级并用。如果既不指定优先级,也不指定optimize_mem,则默认值成为有序的。
“indirect_ref”参数指出,基本限定符或额外限定符与这个引用有关。这些限定符在前面的微字期间由ALU输出。限定符的格式取决于SDRAM命令。如以下各图所示,读/写、r_fifo_rd和t_fifo_wr有不同的格式。
图9是方框图,表现了“indirect_refer读/写命令”的格式,其中:位      字段          说明31       OV           如果被设置,则UENG ADDR字段首要由SDRAM命令隐
                  含的默认微引擎地址,它是发出引用的微引擎。30:28   UENG ADDR    指定与存储器引用有关的微引擎。如果位[31]=0,则
                  这个字段任意。有效的UENG ADDR值是0~5。27       OV           如果被设置,则XADD字段首要由R_FIFO_RD指令隐含
                  的默认传送寄存器地址。26       ABS          如果被设置,则使微引擎传送寄存器能够进行绝对寻
                  址。如果位[27](OV)被设置,则这个位应该总是被设
                  置。25:21   XADD         绝对的传送寄存器地址。
                  有效的地址是:
                   关联文本0的0-7八个传送寄存器。
                   关联文本1的8-15八个传送寄存器。
                   关联文本2的16-23八个传送寄存器。
                   关联文本3的24-31八个传送寄存器。20         OV          如果被设置,则REF CNT字段首要由SDRAM指令指定
                   的ref_count。19:16     REF CNT     将被转移到SDRAM或从SDRAM被转移的四倍字长的数
                   量。有效的REF CNT值是0~3,其中,四倍字长的数
                   量=REF CNT+1。15 OV只应用于SDRAM写入。如果被
                   设置,则“字节掩码”字段首要由SDRAM指令隐含的
                   0xFF的默认字节掩码。“字节掩码”值(而非0xFF)
                   要求REF CNT=1。14:7      字节掩码    “字节掩码”允许在被寻址的SDRAM四倍字长内进行
                   对齐的字节写入操作。被写入的这些字节由字节掩码
                   指定。关于字节掩码中的每个位,1的值使写入能够
                   发生在对应的字节位置中,0的值保存以前存在的值。
                   最低位对应于最右边的字节;最高位对应于最左边的
                   字节。字节掩码(除默认(0xFF)外)请求SDRAM控制器
                   执行读取-修改-写入操作,这会影响性能。6:3       RES         被保留。当读取时,返回0。2:        OV          如果被设置,则CTX字段首要由SDRAM指令隐含的默
                   认关联文本。1:0       CTX         指定与存储器引用有关的关联文本。如果位[2]=0,则
                   这个字段任意。有效的CTX值是0~3。
参考图10,示出“indirect_引用T_FIFO_WR”命令的格式的方框图,其中:位        字段        说明31         OV         如果被设置,则UENG ADDR字段首要由T_FIFO_WR指
                  令隐含的默认微引擎地址,它是发出引用的微引擎。30:28       UENG ADDR        指定与存储器引用有关的微引擎。如果位[31]=0,则
                          这个字段任意。有效的UENG ADDR值是0~5。27:21       RES              被保留。当读取时,返回0。20           OV               如果被设置,则REF CNT字段首要由T_FIFO_WR指令
                          指定的ref_count。19:16       REF CNT          将被转移到SDRAM或从SDRAM被转移的四倍字长的数
                          量。有效的REF CNT值是0~15。15           RES              被保留。当读取时,返回0。14:12       字节ALN          当寻址发送FIFO时,指出字节对准。11:4        XMIT FIFO        QWD ADDR指定发送FIFO中160个四倍字长中的一个
                          四倍字长的地址。较低编号的地址首先被发送到FIFO
                          总线上。3            RES              被保留。当读取时,返回0。2:          OV               如果被设置,则CTX字段首要由T_FIFO_WR指令隐含
                          的默认关联文本。1:0         CTX              指定与存储器引用有关的关联文本。如果位[2]=0,则
                          这个字段任意。有效的CTX值是0~3。
参考图11,示出read_引用R_FIFO_Rd命令的格式的方框图,其中:位         字段              说明31          OV               如果被设置,则UENG ADDR字段首要由SDRAM指令隐
                         含的默认微引擎地址,它是发出引用的微引擎。30:28      UENG ADDR        指定与存储器引用有关的微引擎。如果位[31]=0,则
                         这个字段任意。有效的UENG ADDR值是0~5。27:21      RES              被保留。当读取时,返回0。20          OV               如果被设置,则REF CNT字段首要由T_FIFO_WR指令
                         指定的ref_count。19:16      REF CNT          将被转移到SDRAM或从SDRAM被转移的四倍字长的数
                         量。有效的REF CNT值是0~15。15:12      RES              被保留。当读取时,返回0。11:4        RECV FIFO      QWD ADDR指定接收FIFO中160个四倍字长中的一个
                        四倍字长的地址。较低编号的地址首先从FIFO总线被
                        接收。3            RES            被保留。当读取时,返回0。2:          OV             如果被设置,则CTX字段首要由SDRAM指令隐含的默
                        认关联文本。1:0         CTX            指定与存储器引用有关的关联文本。如果位[2]=0,则
                        这个字段任意。有效的CTX值是0~3。
计算机指令集也包括将存储器引用发给便笺式存储器的一个指令。
到暂时存储器的存储器引用指令的格式是scratch[scratch_cmd,$sram_xfer_reg,source_op1,source_op2,ref_count_or_bit_op],optional_token。每个字段在下文加以全面的描述。
“Scratch_cmd”字段代表将在便笺式存储器上执行的一项操作。“bit_wr”操作设置或清除便笺式存储器长字中的用户指定位。“read”操作从便笺式存储器读到SRAM传送寄存器。“写入”操作从SRAM传送寄存器写到便笺式存储器。“incr”操作增加被寻址的便笺式存储器位置;ref_count必须等于1。
如果使用read或write scratch_cmd参数,则“$sram_xfer_reg”字段代表一组邻近的寄存器的开端,这套寄存器分别接收或提供有关读或写操作的便笺式存储器数据。如果使用incr scratch_cmd参数,则这必须是“--”。SRAM传送寄存器名称总是从一个$符号开始。如果使用“bit_wr scratch_cmd”参数,则这个寄存器包含一个位掩码,该位掩码选择应该设置或清除哪些位。关于set_and_set_bits和set_and_clear_bits选项,当这个寄存器存在于设置或清除位之前时,它也返回原来的数据。
“source_op1”和“source_op2”字段代表有关关联文本的寄存器或范围从+31到0的5位零填充最近数据。这些操作数被加在一起,以构成便笺式存储器地址。有效的便笺式存储器地址的范围从0到1023。
如果使用read、write或incr scratch_cmd参数,则“ref_count_or_bit_op”字段指定由操作引用的邻近的便笺式存储器长字的数量。如果计数>1,则为每个后来的引用隐含递增便笺式存储器地址。关于读、写操作的有效的引用计数值是1~8。如果使用incr scratch_cmd参数,则引用计数必须是1。如果使用bit_wr scratch_cmd参数,则也必须使用以下参数中的一个参数:“set_bits”被用来设置或清除使用一个指定位掩码的地址处的位。“clear_bits”被用来设置或清除使用指定位掩码的地址处的位。“set_and_set_bits”也被用来设置或清除位,但按原样返回操作之前就存在的原始数据。“set_and_clear_bits”也被用来设置或清除位,但按原样返回当它存在于操作之前就存在的原始数据。
“optional_token”字段是包含以下所述的参数中的一个参数的用户可任选的字段。
“sig_done”参数指出,当引用完成时,用信号通知正在提供或吸收存储数据的对应的微引擎/线程对。不与ctx_swap并用。
“ctx_swap”参数指出,当发出存储器引用时,交换出当前的线程执行,以便让另一个线程运行。不与sig_done并用。
“defer[1]”参数与sig_done或ctx_swap选项并用。在交换关联文本之前,指定一个指令将在这个引用后被执行。不与sig_done并用。
“indirect_ref”参数指出,基本限定符或额外限定符与这个引用有关。这些限定符在前面的微字期间由ALU输出。限定符的格式取决于便笺式存储器命令。
参考图12,示出“读/写命令”的indirect_ref的格式的方框图,其中,位        字段         说明31         OV          如果被设置,则UENG ADDR字段首要由SCRATCH指令
                   隐含的默认微引擎地址,它是发出引用的微引擎。30:28     UENG ADDR   指定与存储器引用有关的微引擎。如果位[31]=0,则
                   这个字段任意。有效的UENG ADDR值是0~5。27         OV          如果被设置,则XADD字段首要由SCRATCH指令隐含的
                   默认传送寄存器地址。26         ABS         如果被设置,则使微引擎传送寄存器能够进行绝对寻
                   址。如果位[27](OV)被设置,则这个位应该总是被设
                   置。25:21     XADD        绝对的传送寄存器地址。
                   有效的地址是:关联文本0的0-7八个传送寄存器。
                    关联文本1的8-15八个传送寄存器。关联文本2的
                    16-23八个传送寄存器。关联文本3的24-31八个传
                    送寄存器。20        OV            如果被设置,则REF CNT字段首要由SCRATCH指令指
                    定的ref_count。19:16    REF CNT       将被转移到便笺式存储器或从便笺式存储器被转移的
                    长字的数量。有效的REF CNT值是0~7,其中,长字
                    的数量=REF CNT+1。15        OV            如果被设置,则“字节掩码”字段首要由SCRATCH指
                    令隐含的0xF的默认字节掩码。14:11    RES           被保留。当读取时,返回0。10:7     字节掩码      “字节掩码”允许在被寻址的便笺式存储器长字内进
                    行对齐的字节写入操作。被写入的这些字节由字节掩
                    码指定。关于字节掩码中的每个位,1的值使写入能
                    够发生在对应的字节位置中,0的值保留以前存在的
                    值。最低位对应于最右边的字节;最高位对应于最左
                    边的字节。字节掩码(而不是默认(0xF))请求读取-修
                    改-写入操作,这会影响性能。6:3      RES           被保留。当读取时,返回0。2:       OV            如果被设置,则CTX字段首要由SCRATCH指令隐含的
                    默认关联文本。1:0      CTX           指定与存储器引用有关的关联文本。如果位[2]=0,则
                    这个字段任意。有效的CTX值是0~3。
参考图13,示出“indirect_refbit_WR命令”的格式的方框图,其中,位      字段           说明31       OV            如果被设置,则UENG ADDR字段首要由擦除指令隐含
                   的默认微引擎地址,它是发出引用的微引擎。30:28   UENG ADDR     指定与存储器引用有关的微引擎。如果位[31]=0,则
                   这个字段任意。有效的UENG ADDR值是0~5。27       OV       如果被设置,则XADD字段首要由SCRATCH指令隐含的
              默认传送寄存器地址。26       ABS      如果被设置,则使微引擎传送寄存器能够进行绝对寻
              址。如果位[27](OV)被设置,则这个位应该总是被设
              置。25:21   XADD     绝对的传送寄存器地址。有效的地址是:
              关联文本0的0-7八个传送寄存器。关联文本1的8-15
              八个传送寄存器。关联文本2的16-23八个传送寄存
              器。关联文本3的24-31八个传送寄存器。20       OV       如果被设置,则TS和ST字段首要由SCRATCH指令指
              定的位操作。19:18   RES      被保留。当读取时,返回0。17       TS       当被设置时,指定读取数据在写入操作之前被返回,
              以便可以测试数据。16       ST       指定操作是被设置(ST=1)还是清除(ST=0)。15:3    RES      被保留。当读取时,返回0。2:      OV       如果被设置,则CTX字段首要由擦除指令隐含的默认
              关联文本。1:0     CTX      指定与存储器引用有关的关联文本。如果位[2]=0,则
              这个字段任意。有效的CTX值是0~3。
不言而喻,已详细描述了本发明,但是,前述的描述意在展示而不是限制本发明的范围。本发明的范围由所附权利要求的范围定义。其他的方面、优点和修改在以下的权利要求范围内。

Claims (36)

1.一种计算机指令,其特征在于包括:
一命令指令,该命令指令在线程的关联文本无效时,向微处理器中执行的线程所共享的存储器中的一个地址发出一条存储器引用。
2.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段设置或清除长字中的用户指定位的命令字段。
3.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段从所述地址读到与微引擎有关的传送寄存器。
4.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段锁定存储器然后读取存储器。
5.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段从与微引擎有关的传送寄存器写到存储器。
6.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段写到所述地址并为所述地址解锁。
7.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段将由所述地址指定的列表的元素压入指定的堆栈中。
8.权利要求1的指令,其特征在于:其中,命令指令包括一命令字段,该命令字段从指定的堆栈中弹出由所述地址指定的列表的元素。
9.权利要求1的指令,其特征在于包括:
被指定为指令中的一个参数的传送寄存器。
10.权利要求1的指令,其特征在于还包括:
第一源操作数字段;以及,
第二源操作数字段。
11.权利要求10的指令,其特征在于:其中,第一源操作数和第二源操作数是与关联相关的寄存器。
12.权利要求10的指令,其特征在于:其中,第一源操作数和第二源操作数是范围从+31到0的5位中间数据。
13.权利要求1的指令,其特征在于:还包括被指定为指令中的一个参数的一个引用计数字段。
14.权利要求13的指令,其特征在于:其中,引用计数字段在将被引用的存储器中指定许多邻近的长字。
15.权利要求1的指令,其特征在于:还包括作为指令中的一个参数的一个队列号。
16.权利要求15的指令,其特征在于:其中,队列号指定八个压入/弹出队列中的一个。
17.权利要求1的指令,其特征在于:还包括作为指令中的一个参数的位操作数。
18.权利要求17的指令,其特征在于:其中,位操作数用一字段的位掩码来设置或清除一地址处的位。
19.权利要求1的指令,其特征在于还包括:
由程序设计员设置的一个任选标记。
20.权利要求19的指令,其特征在于:其中,任选标记在完成时使所述指令给正在提供或吸收存储数据的相应微引擎/线程对发出信号。
21.权利要求19的指令,其特征在于:其中,任选标记换出当前线程执行的关联文本,以便让另一个线程关联文本执行。
22.权利要求19的指令,其特征在于:其中,任选标记在执行一个指令之后换出一当前关联文本线程。
23.权利要求19的指令,其特征在于:其中,任选标记将存储器引用放入一个有序队列。
24.权利要求19的指令,其特征在于:其中,任选标记将存储器引用放入一个优先级队列。
25.权利要求19的指令,其特征在于:其中,任选标记通过将存储器引用放入一读取或有序队列来优化存储器带宽。
26.权利要求19的指令,其特征在于:其中,任选标记指示首要限定符。
27.权利要求1的指令,其特征在于:其中,存储器是同步动态随机存取存储器(SDRAM)。
28.权利要求1的指令,其特征在于:其中,存储器是同步随机存取存储器(SRAM)。
29.权利要求1的指令,其特征在于:其中存储器是便笺式存储器。
30.一种操作处理器的方法,其特征在于包括:
将命令发给在微处理器中执行的线程所共享的存储器,每个线程具有一个有关的关联文本;以及,
当命令正在执行时,不启用发出所述命令的线程的关联文本。
31.权利要求30的方法,其特征在于:其中,命令包括:
在长字中设置用户指定位。
32.权利要求30的方法,其特征在于:其中,命令包括:
清除长字中的用户指定位。
33.权利要求30的方法,其特征在于还包括:
提供存储器中的一个地址,以引起变化。
34.权利要求33的方法,其特征在于:其中,命令包括:
锁定存储器。
35.权利要求34的方法,其特征在于:其中,命令还包括:
从所述地址读到与微处理器有关的传送寄存器。
36.权利要求33的方法,其特征在于还包括:
为存储器解锁;以及,
从与微处理器有关的传送寄存器写到所述地址。
CNB008154120A 1999-09-01 2000-09-01 多线程并行处理器结构中所用的微引擎的存储器引用指令 Expired - Fee Related CN100351781C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15196199P 1999-09-01 1999-09-01
US60/151,961 1999-09-01

Publications (2)

Publication Number Publication Date
CN1402845A true CN1402845A (zh) 2003-03-12
CN100351781C CN100351781C (zh) 2007-11-28

Family

ID=22540994

Family Applications (7)

Application Number Title Priority Date Filing Date
CNB008144966A Expired - Fee Related CN100474236C (zh) 1999-09-01 2000-08-31 多线程并行处理器及其维持线程执行的方法
CNB008154309A Expired - Fee Related CN1254739C (zh) 1999-09-01 2000-08-31 处理器和操作处理器的方法
CNB008151237A Expired - Fee Related CN1296818C (zh) 1999-09-01 2000-08-31 用于多线程并行处理器的指令
CNB008154376A Expired - Fee Related CN1184562C (zh) 1999-09-01 2000-08-31 处理器的转移指令
CNB008148740A Expired - Fee Related CN1271513C (zh) 1999-09-01 2000-08-31 转移指令的方法和处理器
CNB008154171A Expired - Fee Related CN100342326C (zh) 1999-09-01 2000-08-31 多线程处理器和操作处理器的方法
CNB008154120A Expired - Fee Related CN100351781C (zh) 1999-09-01 2000-09-01 多线程并行处理器结构中所用的微引擎的存储器引用指令

Family Applications Before (6)

Application Number Title Priority Date Filing Date
CNB008144966A Expired - Fee Related CN100474236C (zh) 1999-09-01 2000-08-31 多线程并行处理器及其维持线程执行的方法
CNB008154309A Expired - Fee Related CN1254739C (zh) 1999-09-01 2000-08-31 处理器和操作处理器的方法
CNB008151237A Expired - Fee Related CN1296818C (zh) 1999-09-01 2000-08-31 用于多线程并行处理器的指令
CNB008154376A Expired - Fee Related CN1184562C (zh) 1999-09-01 2000-08-31 处理器的转移指令
CNB008148740A Expired - Fee Related CN1271513C (zh) 1999-09-01 2000-08-31 转移指令的方法和处理器
CNB008154171A Expired - Fee Related CN100342326C (zh) 1999-09-01 2000-08-31 多线程处理器和操作处理器的方法

Country Status (10)

Country Link
US (1) US7421572B1 (zh)
EP (7) EP1236094B1 (zh)
CN (7) CN100474236C (zh)
AT (2) ATE396449T1 (zh)
AU (11) AU7340700A (zh)
CA (7) CA2383528C (zh)
DE (2) DE60044752D1 (zh)
HK (8) HK1046049A1 (zh)
TW (11) TW559729B (zh)
WO (8) WO2001018646A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750664A (zh) * 2004-02-27 2012-10-24 辉达公司 基于寄存器的对纹理请求的排队
CN103034454A (zh) * 2011-07-14 2013-04-10 Lsi公司 柔性闪存命令
CN103984235A (zh) * 2014-05-27 2014-08-13 湖南大学 基于c/s结构的空间机械臂控制系统软件架构及构建方法

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
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
US7292586B2 (en) * 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
US6785793B2 (en) * 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
EP1436724A4 (en) * 2001-09-28 2007-10-03 Consentry Networks Inc MORE THREAD PACKAGE PROCESSING ENGINE FOR CAREFUL PACKAGE PROCESSING
US7069442B2 (en) * 2002-03-29 2006-06-27 Intel Corporation System and method for execution of a secured environment initialization instruction
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
GB2409062C (en) 2003-12-09 2007-12-11 Advanced Risc Mach Ltd Aliasing data processing registers
GB0420442D0 (en) * 2004-09-14 2004-10-20 Ignios Ltd Debug in a multicore architecture
US9038070B2 (en) 2004-09-14 2015-05-19 Synopsys, Inc. Debug in a multicore architecture
SE0403128D0 (sv) * 2004-12-22 2004-12-22 Xelerated Ab A method for a processor, and a processor
US8028295B2 (en) * 2005-09-30 2011-09-27 Intel Corporation Apparatus, system, and method for persistent user-level thread
US7882284B2 (en) * 2007-03-26 2011-02-01 Analog Devices, Inc. Compute unit with an internal bit FIFO circuit
US7991967B2 (en) * 2007-06-29 2011-08-02 Microsoft Corporation Using type stability to facilitate contention management
US9384003B2 (en) * 2007-10-23 2016-07-05 Texas Instruments Incorporated Determining whether a branch instruction is predicted based on a capture range of a second instruction
US9207968B2 (en) * 2009-11-03 2015-12-08 Mediatek Inc. Computing system using single operating system to provide normal security services and high security services, and methods thereof
CN101950277B (zh) * 2010-09-13 2012-04-25 青岛海信信芯科技有限公司 用于微控制单元的数据传输方法与装置以及数据传输系统
GB2486737B (en) * 2010-12-24 2018-09-19 Qualcomm Technologies Int Ltd Instruction execution
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
WO2013101232A1 (en) 2011-12-30 2013-07-04 Intel Corporation Packed rotate processors, methods, systems, and instructions
CN102833336A (zh) * 2012-08-31 2012-12-19 河海大学 分散分布式信息采集与并发处理系统中数据分包处理方法
US10140129B2 (en) * 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
CN103186438A (zh) * 2013-04-02 2013-07-03 浪潮电子信息产业股份有限公司 一种提高磁盘阵列数据重构效率的方法
CN103226328B (zh) * 2013-04-21 2015-06-24 中国矿业大学(北京) 采集次数控制模式下的多线程数据采集系统同步控制方法
US20150127927A1 (en) * 2013-11-01 2015-05-07 Qualcomm Incorporated Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media
KR102254099B1 (ko) 2014-05-19 2021-05-20 삼성전자주식회사 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템
US20160381050A1 (en) 2015-06-26 2016-12-29 Intel Corporation Processors, methods, systems, and instructions to protect shadow stacks
US10394556B2 (en) * 2015-12-20 2019-08-27 Intel Corporation Hardware apparatuses and methods to switch shadow stack pointers
US10430580B2 (en) 2016-02-04 2019-10-01 Intel Corporation Processor extensions to protect stacks during ring transitions
US10838656B2 (en) 2016-12-20 2020-11-17 Mediatek Inc. Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units
US10387037B2 (en) * 2016-12-31 2019-08-20 Intel Corporation Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies
EP4089531A1 (en) 2016-12-31 2022-11-16 Intel Corporation Systems, methods, and apparatuses for heterogeneous computing
CN107329812B (zh) * 2017-06-09 2018-07-06 腾讯科技(深圳)有限公司 一种运行协程的方法和装置
CN112463327B (zh) * 2020-11-25 2023-01-31 海光信息技术股份有限公司 逻辑线程快速切换的方法、装置、cpu芯片及服务器
TWI769080B (zh) * 2021-09-17 2022-06-21 瑞昱半導體股份有限公司 用於同步動態隨機存取記憶體之控制模組及其控制方法
US20230205869A1 (en) * 2021-12-23 2023-06-29 Intel Corporation Efficient exception handling in trusted execution environments

Family Cites Families (140)

* 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
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
US3881173A (en) 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
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
FR2253415A5 (zh) 1973-12-04 1975-06-27 Cii
US3913074A (en) * 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
US4392758A (en) 1978-05-22 1983-07-12 International Business Machines Corporation Underscore 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
US4471426A (en) * 1981-07-02 1984-09-11 Texas Instruments Incorporated Microcomputer which fetches two sets of microcode bits at one time
US4454595A (en) 1981-12-23 1984-06-12 Pitney Bowes Inc. Buffer for use with a fixed disk controller
US4477872A (en) 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
JPS6014338A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 計算機システムにおける分岐機構
US4606025A (en) 1983-09-28 1986-08-12 International Business Machines Corp. Automatically testing a plurality of memory arrays on selected memory array testers
US4808988A (en) 1984-04-13 1989-02-28 Megatek Corporation Digital vector generator for a graphic display system
US4868735A (en) 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4742451A (en) 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US5187800A (en) 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US4755966A (en) 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4847755A (en) 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4745544A (en) 1985-12-12 1988-05-17 Texas Instruments Incorporated Master/slave sequencing processor with forced I/O
US4724521A (en) * 1986-01-14 1988-02-09 Veri-Fone, Inc. Method for operating a local terminal to execute a downloaded application program
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
US5170484A (en) 1986-09-18 1992-12-08 Digital Equipment Corporation Massively parallel array processing system
US4992934A (en) 1986-12-15 1991-02-12 United Technologies Corporation Reduced instruction set computing apparatus and methods
US5073864A (en) 1987-02-10 1991-12-17 Davin Computer Corporation Parallel string processor and method for a minicomputer
US5142683A (en) 1987-03-09 1992-08-25 Unisys Corporation Intercomputer communication control apparatus and method
US4866664A (en) 1987-03-09 1989-09-12 Unisys Corporation Intercomputer communication control apparatus & method
US4816913A (en) 1987-11-16 1989-03-28 Technology, Inc., 64 Pixel interpolation circuitry as for a video signal processor
US5189636A (en) 1987-11-16 1993-02-23 Intel Corporation Dual mode combining circuitry
US5055999A (en) * 1987-12-22 1991-10-08 Kendall Square Research Corporation Multiprocessor digital data processing system
US5220669A (en) * 1988-02-10 1993-06-15 International Business Machines Corporation Linkage mechanism for program isolation
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5056015A (en) 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
US5165025A (en) 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5202972A (en) 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
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
US5113516A (en) 1989-07-31 1992-05-12 North American Philips Corporation Data repacker having controlled feedback shifters and registers for changing data format
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
US5544337A (en) 1989-12-29 1996-08-06 Cray Research, Inc. Vector processor having registers for control by vector resisters
US5247671A (en) 1990-02-14 1993-09-21 International Business Machines Corporation Scalable schedules for serial communications controller in data processing systems
JPH0799812B2 (ja) * 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
JPH0454652A (ja) * 1990-06-25 1992-02-21 Nec Corp マイクロコンピュータ
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
CA2045790A1 (en) * 1990-06-29 1991-12-30 Richard Lee Sites Branch prediction in high-performance processor
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
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
DE4129614C2 (de) * 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
JP2508907B2 (ja) * 1990-09-18 1996-06-19 日本電気株式会社 遅延分岐命令の制御方式
EP0553158B1 (en) * 1990-10-19 1994-12-28 Cray Research, Inc. A scalable parallel vector computer system
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
US5394530A (en) 1991-03-15 1995-02-28 Nec Corporation Arrangement for predicting a branch target address in the second iteration of a short loop
EP0522513A2 (en) * 1991-07-09 1993-01-13 Hughes Aircraft Company High speed parallel microcode program controller
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
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
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
US5357617A (en) 1991-11-22 1994-10-18 International Business Machines Corporation Method and apparatus for substantially concurrent multiple instruction thread processing by a single pipeline processor
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 松下電器産業株式会社 レジスタファイル
KR100309566B1 (ko) 1992-04-29 2001-12-15 리패치 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치
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
US5274770A (en) 1992-07-29 1993-12-28 Tritech Microelectronics International Pte Ltd. Flexible register-based I/O microcontroller with single cycle instruction execution
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5463746A (en) 1992-10-30 1995-10-31 International Business Machines Corp. Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5428779A (en) 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5450603A (en) 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
KR100313261B1 (ko) 1992-12-23 2002-02-28 앙드래베이너,조엘브르리아드 저전력형다중작업제어기(명칭정정)
US5404464A (en) 1993-02-11 1995-04-04 Ast Research, Inc. Bus control system and method that selectively generate an early address strobe
US5448702A (en) 1993-03-02 1995-09-05 International Business Machines Corporation Adapters with descriptor queue management capability
US5522069A (en) 1993-04-30 1996-05-28 Zenith Data Systems Corporation Symmetric multiprocessing system with unified environment and distributed system functions
WO1994027216A1 (en) 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
CA2122182A1 (en) 1993-05-20 1994-11-21 Rene Leblanc Method for rapid prototyping of programming problems
US5363448A (en) * 1993-06-30 1994-11-08 United Technologies Automotive, Inc. Pseudorandom number generation and cryptographic authentication
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
DE69415126T2 (de) 1993-10-21 1999-07-08 Sun Microsystems Inc Gegenflusspipelineprozessor
EP0650117B1 (en) 1993-10-21 2002-04-10 Sun Microsystems, Inc. Counterflow pipeline
TW261676B (zh) * 1993-11-02 1995-11-01 Motorola Inc
US5450351A (en) 1993-11-19 1995-09-12 International Business Machines Corporation Content addressable memory implementation with random access memory
US6079014A (en) * 1993-12-02 2000-06-20 Intel Corporation Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state
US5487159A (en) 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
EP0661625B1 (en) * 1994-01-03 1999-09-08 Intel Corporation Method and apparatus for implementing a four stage branch resolution system in a computer processor
US5490204A (en) 1994-03-01 1996-02-06 Safco Corporation Automated quality assessment system for cellular networks
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5542088A (en) 1994-04-29 1996-07-30 Intergraph Corporation Method and apparatus for enabling control of task execution
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
FR2722041B1 (fr) * 1994-06-30 1998-01-02 Samsung Electronics Co Ltd Decodeur de huffman
US5655132A (en) * 1994-08-08 1997-08-05 Rockwell International Corporation Register file with multi-tasking support
US5640538A (en) 1994-08-22 1997-06-17 Adaptec, Inc. Programmable timing mark sequencer for a disk drive
US5717760A (en) * 1994-11-09 1998-02-10 Channel One Communications, Inc. Message protection system and method
WO1996017295A1 (en) * 1994-12-02 1996-06-06 Hyundai Electronics America, Inc. Limited run branch prediction
US5610864A (en) 1994-12-23 1997-03-11 Micron Technology, Inc. Burst EDO memory device with maximized write cycle timing
US5550816A (en) 1994-12-29 1996-08-27 Storage Technology Corporation Method and apparatus for virtual switching
US5649157A (en) 1995-03-30 1997-07-15 Hewlett-Packard Co. Memory controller with priority queues
JP3130446B2 (ja) * 1995-05-10 2001-01-31 松下電器産業株式会社 プログラム変換装置及びプロセッサ
US5592622A (en) 1995-05-10 1997-01-07 3Com Corporation Network intermediate system with message passing architecture
US5541920A (en) 1995-06-15 1996-07-30 Bay Networks, Inc. Method and apparatus for a delayed replace mechanism for a streaming packet modification engine
KR0180169B1 (ko) * 1995-06-30 1999-05-01 배순훈 가변길이 부호기
US5613071A (en) 1995-07-14 1997-03-18 Intel Corporation Method and apparatus for providing remote memory access in a distributed memory multiprocessor system
US5933627A (en) * 1996-07-01 1999-08-03 Sun Microsystems Thread switch on blocked load or store using instruction thread field
US6058465A (en) * 1996-08-19 2000-05-02 Nguyen; Le Trong Single-instruction-multiple-data processing in a multimedia signal processor
US6061711A (en) * 1996-08-19 2000-05-09 Samsung Electronics, Inc. Efficient context saving and restoring in a multi-tasking computing system environment
CN1147785C (zh) * 1996-08-27 2004-04-28 松下电器产业株式会社 执行多个指令流的多程序流程同时处理器
DE69718278T2 (de) * 1996-10-31 2003-08-21 Texas Instruments Inc Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife
US5857104A (en) 1996-11-26 1999-01-05 Hewlett-Packard Company Synthetic dynamic branch prediction
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
EP0863462B8 (en) * 1997-03-04 2010-07-28 Panasonic Corporation Processor capable of efficiently executing many asynchronous event tasks
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US6009515A (en) * 1997-05-30 1999-12-28 Sun Microsystems, Inc. Digital data processing system including efficient arrangement to support branching within trap shadows
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US5926646A (en) * 1997-09-11 1999-07-20 Advanced Micro Devices, Inc. Context-dependent memory-mapped registers for transparent expansion of a register file
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6560629B1 (en) * 1998-10-30 2003-05-06 Sun Microsystems, Inc. Multi-thread processing

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102750664A (zh) * 2004-02-27 2012-10-24 辉达公司 基于寄存器的对纹理请求的排队
CN102750664B (zh) * 2004-02-27 2016-01-20 辉达公司 基于寄存器的对纹理请求的排队
CN103034454A (zh) * 2011-07-14 2013-04-10 Lsi公司 柔性闪存命令
CN103034454B (zh) * 2011-07-14 2015-08-26 Lsi公司 柔性闪存命令
CN103984235A (zh) * 2014-05-27 2014-08-13 湖南大学 基于c/s结构的空间机械臂控制系统软件架构及构建方法
CN103984235B (zh) * 2014-05-27 2016-05-11 湖南大学 基于c/s结构的空间机械臂控制系统软件架构及构建方法

Also Published As

Publication number Publication date
ATE396449T1 (de) 2008-06-15
AU7097900A (en) 2001-03-26
CA2383528A1 (en) 2001-03-08
WO2001016758A3 (en) 2001-10-25
TWI220732B (en) 2004-09-01
CA2383532A1 (en) 2001-03-08
EP1242869B1 (en) 2011-11-16
EP1236094A1 (en) 2002-09-04
US7421572B1 (en) 2008-09-02
DE60044752D1 (de) 2010-09-09
AU7342900A (en) 2001-03-26
TW594562B (en) 2004-06-21
CN1402846A (zh) 2003-03-12
EP1236088B9 (en) 2008-10-08
EP1236092A4 (en) 2006-07-26
TW486667B (en) 2002-05-11
AU7098700A (en) 2001-03-26
EP1236094B1 (en) 2010-07-28
WO2001016758A9 (en) 2002-09-12
CA2383540A1 (en) 2001-03-08
AU7101200A (en) 2001-03-26
DE60038976D1 (de) 2008-07-03
HK1046566A1 (zh) 2003-01-17
EP1242867A4 (en) 2008-07-30
AU7340700A (en) 2001-03-26
CA2386558A1 (en) 2001-03-08
EP1236092A1 (en) 2002-09-04
WO2001018646A9 (en) 2002-09-12
TW486666B (en) 2002-05-11
CN1296818C (zh) 2007-01-24
EP1236097A1 (en) 2002-09-04
CN1387640A (zh) 2002-12-25
CN1184562C (zh) 2005-01-12
EP1236094A4 (en) 2006-04-19
EP1236093A1 (en) 2002-09-04
WO2001016722A1 (en) 2001-03-08
EP1242869A1 (en) 2002-09-25
TW571239B (en) 2004-01-11
TW569133B (en) 2004-01-01
TWI221251B (en) 2004-09-21
AU7340600A (en) 2001-04-10
EP1236093A4 (en) 2006-07-26
CA2383528C (en) 2008-06-17
WO2001016698A3 (en) 2002-01-17
AU7099000A (en) 2001-03-26
TW475148B (en) 2002-02-01
WO2001016698A2 (en) 2001-03-08
WO2001016716A1 (en) 2001-03-08
AU7098600A (en) 2001-03-26
EP1242867A2 (en) 2002-09-25
WO2001018646A1 (en) 2001-03-15
CN100342326C (zh) 2007-10-10
HK1046565A1 (zh) 2003-01-17
CA2383531A1 (en) 2001-03-08
HK1051730A1 (en) 2003-08-15
WO2001016758A2 (en) 2001-03-08
HK1051247A1 (en) 2003-07-25
CN1387642A (zh) 2002-12-25
EP1236088B1 (en) 2008-05-21
CN1271513C (zh) 2006-08-23
EP1242869A4 (en) 2006-10-25
HK1051728A1 (en) 2003-08-15
EP1236097A4 (en) 2006-08-02
WO2001016715A1 (en) 2001-03-08
CA2386562A1 (en) 2001-03-08
CN1402844A (zh) 2003-03-12
WO2001016715A9 (en) 2002-09-12
EP1236088A4 (en) 2006-04-19
WO2001016713A1 (en) 2001-03-08
HK1051729A1 (en) 2003-08-15
CN1254739C (zh) 2006-05-03
TW548584B (en) 2003-08-21
AU7098400A (en) 2001-03-26
HK1049902A1 (en) 2003-05-30
CN100351781C (zh) 2007-11-28
HK1049902B (zh) 2005-08-26
CA2383526A1 (en) 2001-03-15
AU7340400A (en) 2001-03-26
CN100474236C (zh) 2009-04-01
HK1046049A1 (zh) 2002-12-20
WO2001016714A1 (en) 2001-03-08
WO2001016714A9 (en) 2002-09-12
ATE475930T1 (de) 2010-08-15
TW559729B (en) 2003-11-01
EP1236088A1 (en) 2002-09-04
TW546585B (en) 2003-08-11
CN1399736A (zh) 2003-02-26
CN1390323A (zh) 2003-01-08
AU7098500A (en) 2001-03-26
CA2386558C (en) 2010-03-09

Similar Documents

Publication Publication Date Title
CN1402845A (zh) 多线程并行处理器结构中所用的微引擎的存储器引用指令
CN1192314C (zh) 并行处理器结构的sram控制器
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1387641A (zh) 并行处理器中的多线程执行
CN1185592C (zh) 并行处理器结构
CN1205553C (zh) 分优先级访问外部装置的设备
TWI229259B (en) A method and related apparatus and computer program product for distributed memory control and bandwidth optimization
CN1199109C (zh) 通过重排序存储器请求提高总线利用率的存储器控制器
JP5610636B2 (ja) トラフィッククラスと関連するポートをもつマルチポートのメモリコントローラ
CN1357121A (zh) 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法
CN1256681C (zh) 从外围设备向主计算机系统传输中断的方法和装置
CN1967506A (zh) 高速缓存存储器处理器中的合并入口
CN1333891A (zh) 利用页标志寄存器跟踪存储器装置内物理页的状态
US7418540B2 (en) Memory controller with command queue look-ahead
CN1508709A (zh) 仲裁电路和数据处理系统
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1243311C (zh) 实现重叠操作的方法和系统
CN110320970A (zh) 高度可缩放的加速器
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和系统
CN1504902A (zh) 在存储器部件之间保持数据一致性的方法和系统
CN1311357C (zh) 通用资源访问控制器
US20120110594A1 (en) Load balancing when assigning operations in a processor
CN1504904A (zh) 存储器克隆操作期间保护高速缓冲存储器线的方法和系统
CN1812378A (zh) 基于网络处理器的流相关控制信息高速缓冲存储器
CN100339825C (zh) 将多余的分支目标地址高速缓存项目无效化的装置及方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1051730

Country of ref document: HK

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: 20071128

Termination date: 20160901