CN1271513C - 转移指令的方法和处理器 - Google Patents
转移指令的方法和处理器 Download PDFInfo
- Publication number
- CN1271513C CN1271513C CNB008148740A CN00814874A CN1271513C CN 1271513 C CN1271513 C CN 1271513C CN B008148740 A CNB008148740 A CN B008148740A CN 00814874 A CN00814874 A CN 00814874A CN 1271513 C CN1271513 C CN 1271513C
- Authority
- CN
- China
- Prior art keywords
- environment
- processor
- memory
- instruction
- transfer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3834—Maintaining memory consistency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Image Processing (AREA)
- Stored Programmes (AREA)
- Harvester Elements (AREA)
- Control Of Transmission Device (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Document Processing Apparatus (AREA)
- Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)
Abstract
本发明描述一个并行的基于硬件的多线程处理器(12)。处理器(12)包括一个协调系统功能的通用处理器和多个微引擎(22a-22f),后者支持多个硬件线程或环境。处理器(12)还包括一个存储控制系统(16),它具有第一存储控制器(26a),根据存储器调用是否针对一个偶数存储器或一个奇数存储器来排序存储器调用;还具有第二存储控制器(26b),根据该存储器调用是读调用或写调用优化存储器调用。本发明还揭示了用于根据执行环境切换和转移的指令。
Description
技术领域
本发明涉及转移指令。
背景技术
在计算处理中并行处理是同时发生事件的信息处理的有效形式。并行处理要求在一台计算机中同时执行多个程序。相反,顺序处理或串行处理在单个站沿顺序完成所有任务,或者一个管线(流水线)机器以专用的站完成各任务。计算机程序无论是以并行处理、管线或顺序处理方式执行均包括转移,其中一个指令流以顺序方式执行,并从一个指令序列转移到不同的指令序列。
发明内容
本发明提供一种基于硬件的多线程处理器,包括:多个微引擎,每一个所述微引擎包括:控制存储;控制器逻辑;环境事件切换逻辑;和执行箱数据通道,它包括一个算术逻辑单元ALU和一个通用寄存器组,算术逻辑单元响应于指令而执行功能,所述指令之一使得算术逻辑单元会根据当前的环境号是否匹配指定的环境号使一个指令流转移到具有在指定标号处地址的另一个指令流。
本发明还提供一种操作处理器的方法,包括下述步骤:估算一个执行环境的环境号以确定该执行环境的环境号是否匹配指定的环境号;且按照估算的执行环境的环境号,转移到一条指定的指令。
本发明还提供一种能执行多个环境的处理器,包括:一个寄存器堆栈;用于每个执行环境的程序计数器;连接到寄存器堆栈的算术逻辑单元和存储环境交换指令的程序控制存储部件,所述指令使处理器执行:估算一个执行环境的环境号以确定该执行环境的环境号是否匹配指定的环境号;且按照估算的执行环境的环境号转移到一条指定的指令。
本发明还提供一种处理环境的方法,该方法包括留驻在计算机可读存储介质、用于使执行多个环境的处理器完成一个功能的执行指令,所述指令使处理器执行下列动作:
计算一个执行环境的环境号以确定是否执行环境的环境号与指定的环境号匹配;且根据计算的执行环境的环境号,转移至一条规定的指令。
附图说明
图1是使用基于硬件的多线程处理器的一个通信系统的方框图。
图2是图1的基于硬件的多线程处理器的详细的方框图。
图3是在图1和图2的基于硬件的多线程处理器中使用的微引擎功能单元的方框图。
图4是在图3的微引擎中管线的方框图。
图5A和图5B是示出与转移型指令有关的环境(语境)(context)的示例性格式的方框图。
图6是示出通用寄存器地址安排的方框图。
图7是用于在基于硬件的多线程处理器中使用的增强带宽操作的存储器的方框图。
图7A是一个流程图,表示在图7的SDRAM控制器的判优(仲裁)策略。
图7B是一个时序图,示出优化SDRAM控制器的优点。
图8是对于在基于硬件的多线程处理器中使用的受等待时间限制的操作的存储器控制器的方框图。
图8A是示出优化SDRAM控制器的优点的时序图。
图9是在图1的处理器中通信总线接口的方框图。
具体实施方式
参考图1,通信系统10包括一个并行的、基于硬件的多线程处理器12。基于硬件的多线程处理器12连结到如PCI总线14之类的总线、存储器系统16和第二总线18。对于能够分解成并行子任务或功能的任务,系统10特别有用。具体说来,基于硬件的多线程处理器12对于面向带宽而非面向等待时间的任务是有用的。基于硬件的多线程处理器12具有多个微引擎22,每个带有多个能同时激活并独立对一个任务工作的硬件控制的线程。
基于硬件的多线程处理器12还包括一个中央处理器20,它帮助加载用于基于硬件的多线程处理器12的其他资源的微码控制,并完成其他通用计算机类型的功能,如处理协议,例外,对包处理的额外支持,其中微引擎扫描该包以便作如边界条件那样的更详细的处理。在一个实施例中,处理器20是基于Strong Arm(Arm是英国ARM有限公司的商标)的结构。通用微处理器20具有操作系统。通过此操作系统,处理器20能调用功能对微引擎22a-22f操作。处理器20能使用任何支持的操作系统,最好是实时操作系统。对于作为StrongArm结构实现的核心处理器,可以使用如MicrosoftNTreal-time,VXWorks和□CUS那样可在因特网上使用的自由软件操作系统。
基于硬件的多线程处理器12还包括多个功能微引擎22a-22f。功能微引擎(微引擎)22a-22f中每一个包含多个硬件的程序计数器和与这些计数器相关的状态。实际上,对应多个线程组能在每个微引擎22a-22f上同时激活,虽然在任何时刻只有一个实际上在操作。
在一个实施例中,示出6个微引擎22a-22f。每个微引擎具有处理4个硬件线程的能力。6个微引擎22a-22f带着共享资源操作,包括存储器系统16和总线接口24和28。存储器系统16包括一个同步动态随机存储器(SDRAM)控制器26a和静态随机存储器(SRAM)控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大量数据,如处理从网络包来的网络有效负载。SRAM控制器26b和SRAM存储器16b用在对低等待时间,快速访问任务的网络实施中,如对核心处理器20的访问查找表,访问存储器等。
6个微引擎22a-22g根据数据的特征访问SDRAM 16a或SRAM16b。低等待时间,低带宽数据存在SRAM并从中取出,而等待时间不重要的较高带宽的数据存入SDRAM,并从中取出。微引擎22a-22f能执行对SDRAM控制器26a或SRAM控制器16b的存储器调用指令。
硬件多线程的优点能通过SRAM或SDRAM存储器的访问解释。作为例子,由thread_0(线程_0)从一个微引擎请求的SRAM访问引起SRAM控制器26b启动对SRAM存储器16b的访问。SRAM控制器控制对SRAM总线的判优,访问SRAM16b,从SRAM 16b取出数据,并将数据返回到请求的微引擎22a-22b。在SRAM访问过程中,如果微引擎,如22a,只能操作单个线程,该微引擎在数据从SRAM返回以前休眠。通过在每个微引擎22a-22f中应用硬件环境(context)交换,使得其他带着唯一程序计数器的其他环境能在同一微引擎中执行。因此在第一线程,如thread_0,等待读数据返回时,另一线程,如thread_1能工作。在执行中thread_1可访问SDRAM存储器16a。当thread_1对SDRAM单元操作,且thread_0对SRAM单元操作的同时,一个新的线程,如thread_2,现在能在微引擎22a中操作。thread_2能操作一定时间,直到它需要访问存储器,或完成某些如作出对总线接口访问那样另外的长等待时间操作。因此,处理器12能同时具有一个总线操作、SRAM操作和SDRAM操作,所有均由一个微引擎22a操作或完成,并且能具有一个以上线程以在数据通道中处理更多的工作。
硬件环境交换也同步任务的完成。例如,两个线程可以选中同一个共享资源,如SRAM。这些分别的功能单元的每一个,如FBUS接口28、SRAM控制器26a和SDRAM控制器26b,在它们完成从一个微引擎来的请求任务时,线程环境回报一个标志,通知一个操作的完成。当微引擎接收到此标志时,该微引擎能确定打开哪个线程。
对基于硬件的多线程处理器12的一个应用例子是作为网络处理器。作为网络处理器,基于硬件的多线程处理器12接口到如媒体访问控制设备那样网络设备,如10/100BaseT Octal MAC 13a或Gigabit Ethernet(千兆以太网)设备13b。通常,作为网络处理器,基于硬件的多线程处理器12能接口到接收/发送大量数据的通信设备或接口设备。在网络应用中工作的通信系统10能从设备13a,13b接收多个网络包,并以并行方式处理那些包。用基于硬件的多线程处理器12能分别地处理每个网络包。
使用处理器12的另一个例子是用于页式图象(postscript)处理器的打印机引擎作为对存储子系统,即RAID盘存储器的处理器。另一个使用是匹配引擎。在例如安全行业中,电子商务的兴起需要使用电子匹配引擎匹配买方和卖方之间的订单。这些和其他并行类型的任务能在系统10上完成。
处理器12包括一个连结处理器到第2总线18的总线接口28。在一个实施例中,总线接口28将处理器12连结到所谓FBUS18(FIFO总线)。FBUS接口28负责控制并连结处理器12到FBUS18。FBUS18是64位宽的FIFO总线,用于连结到媒体访问控制器(MAC)设备。
处理器12包括一个第二接口,如PCI总线接口24,它将在PCI14总线上的其他系统部件连接到处理器12。PCI总线接口24提供高速数据通道24a到存储器16,如SDRAM存储器16a。经过该通道,数据能借助直接存储器访问(DMA)传输,从SDRAM16a穿过PCI总线14快速移动。基于硬件的多线程处理器12支持图像传输。基于硬件的多线程处理器12能使用多个DMA通道,所以如果DMA传输的一个目标忙,另一个DMA通道能在PCI总线将信息提交到另一个目标,以保持高的处理器12的效率。此外,PCI总线接口24支持目标操作和主操作。目标操作是这样一种操作,其中在总线14上的从属设备通过读和写访问SDRAM,而读和写从属于目标操作。在主要操作中,处理器核心20直接发送数据到PCI接口24或从中接收数据。
每个功能单元连结一个或多个内部总线。如下所述,内部总线是双的32位总线(即一个总线用于读,一个总线用于写)。基于硬件的多线程处理器12,还构造成使得处理器12中内部总线的带宽之和超过连结到处理器12的外部总线的带宽。处理器12包括一个内部核心处理器总线32,如ASB总线(先进系统总线),它将处理器核心20连结到存储控制器26a,26c,并连结到如下所述的ASB翻译器30。ASB总线是与Strong Arm处理器核心一起使用的AMBA总线的子集。处理器12还包括一个专用总线,将微引擎单元连结到SRAM控制器26b、ASB翻译器30和FBUS接口28。存储器总线38将存储控制器26a,26b连接到总线接口24和28以及包括用于自引导等操作的闪存ROM 16c的存储器系统16。
参考图2,每个微引擎22a-22f包括一个判优器,它检查标志以确定操作可用的线程。从任何一个微引擎22a-22f来的任何一个线程能访问SDRAM控制器26a,SRAM控制器26b,或FBUS接口28。存储控制器26a,26b中每一个包括多个队列,以存储未完成的存储器调用请求。此队列或者保持存储器调用的次序,或者安排存储器调用以优化存储器带宽。例如,如果thread_0不依赖于thread_1或与其没有关系,线程1和0没有理由不能不按顺序地完成它们对SRAM单元的存储器调用。微引擎22a-22f对存储控制器26a和26b发出存储器调用请求。微引擎22a-22f将足够的存储器调用操作充满存储器子系统26a和26b,使得存储器子系统26a和26b成为处理器12操作的瓶颈。
如果存储器子系统16用本质上独立的存储器请求充满,处理器12能够完成存储器调用排序。存储器调用排序改善了可得到的存储器带宽。如下所述,存储器调用排序减少了访问SRAM发生的停顿时间或泡沫。随着对SRAM的存储器调用,将信号线的电流方向在读和写之间切换产生一个泡沫或停顿时间,等待在SRAM16b与SRAM控制器26b连结导线上的电流稳定下来。
即,驱动总线电流的驱动器在改变状态以前需要稳定下来。重复的读周期后面跟一个写能降低峰值带宽。存储器调用排序允许处理器12组织对存储器的调用,使得一长串读能跟一长串的写。这能用于使在管线中停顿时间最小,从而更有效地达到接近最大可用的带宽。调用排列帮助维持并行的硬件环境线程。在SDRAM中,调用排序允许隐藏从一个存储区别另一个存储区的预装载。
具体说来,如果存储系统组织成奇数存储区和偶数存储区,当处理器在奇数存储区上操作的同时,存储控制器能开始预装载偶数存储器。如果存储器调用在奇数和偶数存储区之间交换,预装载是可能的。通过排列存储器调用到对相反的存储器的另外的访问,处理器12改善了SDRAM的带宽。此外,也可使用其他的优化。例如,将可以合并的操作在存储器访问前合并的合并优化;通过检查地址,存储器的已打开的页面不再重新打开的打开页面优化;如下所述的链接;和刷新机构都可以使用。
FBUS接口28支持用于每个MAC设备支持的端口的发送和接收标志,以及指示何时需要服务的中断标志。FBUS接口28还包括一个控制器28a,它完成从FBUS18进入的包的首部处理。控制器28a提取包的首部并完成在SRAM中的一个微程序可编程的源/目标/协议的散列查找(用于地址平滑)。如果散列不能成功地解决,该包的首部被送到处理器核心20作另外的处理。FBUS接口28支持下列环境数据事务:
FBUS单元 (共享总线SRAM) 到/从微引擎。
FBUS单元 (经过专用总线) 来自SDRAM单元写。
FBUS单元 (经过Mbus) 读至SDRAM。
FBUS18是标准的工业总线并包括一个数据总线(如64位宽)和用于地址和读/写控制的边带控制。FBUS接口28提供使用一系列输入和输出FIFO 29a-29b输入大量数据的能力。从FIFO 29a-29b,微引擎22a-22f取出数据,或命令SDRAM控制器26a将数据从一个接收FIFO送到FBUS接口28,在接收FIFO中数据从总线18的设备来。借助直接存储器访问,数据能经过存储控制器26a送到SDRAM存储器16a。类似地,微引擎能将数据从SDRAM 26a移到接口28,经过FBUS接口28,移出FBUS18。
数据功能在各微引擎中分配。到SRAM26a,SDRAM26b和FBUS的联络是通过命令请求。命令请求可以是存储器请求或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-22c的寄存器。
虽然微引擎22能使用寄存器组如下所述地交换数据,还可提供便笺存储器(暂时存储器)27,以允许微引擎将数据写到存储器以外,用于其他微引擎读取。便笺存储器27连结到总线34。
处理器核心20包括一个实现以5阶段管线在单个周期完成一个操作数或二个操作数的单循环移位的RISC核心50,提供乘法支持和32位滚动移位支持。此RISC核心50是标准的Strong Arm结构,但为了性能的原因用5阶段管线实现。处理器核心20还包括16千字节的指令高速缓存器52和8千字节的数据高速缓存器54以及预取流缓存器56。核心处理器20与存储写和指令的读取并行地完成算术操作。核心处理器20经过ARM确定的ASB总线与其他功能单元接口。ASB总线是32位双向总线32。
微引擎
参考图3,示出微引擎22a-22f的一个例子,如22f。微引擎包括一个控制存储70,在一个实施例中,它包括一个RAM,这里是1024个32位字。RAM存储微程序。微程序可由核心处理器20加载。微引擎22f还包括控制器逻辑72。控制器逻辑包括一个指令解码器73和程序计数器(PC)单元72a-72d。4个微程序计数器72a-72d保持在硬件中。微引擎22f还包括环境事件切换逻辑74。环境事件逻辑74从如SRAM26a、SDRAM26b或处理器核心20及控制和状态寄存器等那样的共享资源中的每一个接收消息(如SEQ_#_EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_RESPONSE和ASB_EVENT_RESPONSE)。这些消息提供有关所请求的功能是否已完成的信息。根据由线程请求的功能是否已经完成并产生完成信号,该线程需要等待该完成信号,且如果该线程能操作,则该线程被放置于可用的线程表(未图示)。微引擎22f能具有最多例如4个可用的线程。
除了对执行线程是本地的事件信号以外,微引擎22使用全局的信令状态。一个执行线程能用信令号状态对所有微引擎22广播一个信号状态。接收请求有效信号,在微引擎中的任何和所有线程能根据这些信令状态转移。能使用这些信令状态确定一个资源的可用性或一个资源是否已准备好服务。
环境事件逻辑74具有对4个线程的判优。在一个实施例中,判优是一个循环算法机构。可以使用其他技术,包括优先级排队或加权公平排队。微引擎22f还包括一个执行箱(框)(EBOX)数据通道76,它包括一个算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a完成算术和逻辑功能以及移位功能。寄存器组76b具有相当大数目的通用寄存器。如在图6中将描述,在本实施例中第一存储区Bank A中有64个通用寄存器,且在第二存储区Bank B中也有64个。如将描述的,寄存器组分成窗,使得它们可被相对地和绝对地编址。
微引擎22f还包括一个写传输寄存器堆栈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),微引擎能完成同时的寄存器读和写,这完全隐藏了写操作。
SDRAM接口26a将一个信号回到请求读的微引擎,指出在读请求时是否发生奇偶校验错误。当微引擎使用任何返回数据时,该引擎的微码负责检查SDRAM读的奇偶校验标志。在检查标志时,如果它被置位,根据它转移的动作将其清除。只有当SDRAM能够检查且SDRAM是奇偶校验保护的时候才发送奇偶校验标志。微引擎和PZI单元是得知奇偶校验错误的仅有的请求者。因此,如果处理器核心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/shi fter/cc | | | |n1|n2|cb|XX|b1|
写回 | | | | |n1|n2|cb|XX|
在本例中,n1置位条件码而n2不置位条件码。因此,转移决定能在周期4(而非周期5)作出,以消除1个周期的转移等待。在下面例中,1周期的转移延迟和条件码的提前设置结合起来完全隐藏了转移等待。
在1-周期等待转移前条件码(cc)设置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|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|
在上面情况,由于执行n2,以及由于正确地推测转移的方向,2周期的转移等待被隐藏。如果微码推测不正确,如下所示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)
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|
微引擎支持包括逻辑和算术操作的各种标准类型的ALU指令,它们对一个或两个操作数完成ALU操作并将结果放入目标寄存器。根据操作的结果,ALU更新所有的ALU条件码。在环境更换期间条件码的值丢失。
参考图5A,示出环境转移指令BR=CTX,BR!=CTX。环境转移指令使得如微引擎22f那样的处理器根据当前的执行环境是否为指定环境号而转移到指定标号的指令。如图5A所示,环境转移指令在等于“0”或“9”时从转移的屏蔽字段确定。环境转移指令可以具有下列格式:
br=ctx[ctx,label#],optional_token(可选标记)
br!=ctx[ctx,label#],optional_token
字段label#是对应于指令地址的符号标号。字段ctx是环境号。在一个实施例中,有效的ctx值是0,1,2或3。环境转移指令可具有optional_token。可选标记“defer one”引起微引擎在完成转移操作前执行该指令后的一条指令。
如果环境(ctx)是指定的数,指令br=ctx转移,如果环境不是指定的数,指令br=ctx!转移。
参考图5B,环境交换指令是引起选择不同的环境(及相关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|
写回 | | | | |o1|ca|XX|n1|n2|
其中ox是老的环境流
br是在老的环境的转移微字
ca是环境重判优(引起环境切换)
nx是新的环境流
XX是丢弃的微字
在一个环境切换中丢弃“br”微字以避免由于保存正确的老的环境PC引起的控制和时序的复杂性。
对转移前在微字上设置的ALU条件码操作的条件转移可选择0,1或2周期的转移延迟模式。在所操作的条件转移可选择0或1-周期转移延迟方式之前,条件码设置2个或更多的微字。所有其他转移(包括环境重判优)能选择0或1-周期转移延迟方式。可以设计那样的结构,使得在以前的转移、跳转或环境判优微字的转移延迟窗中的环境判优微字成为一个无效操作。即在某些实施例中,在转移过渡期间不允许发生环境交替,因为如上提到,保存老的环境程序计数器(PC)可能非常复杂。还可以设计那样的结构,使得在以前的转移、跳转或环境微字的转移延迟窗中的转移无效,以避免复杂和可能的非预料的转移行为。
环境交换指令CTX_ARB将特定的微引擎中当前运行的环境交换到存储器中,让另外的环境在那个微引擎中运行。当指定的信号被激活时,环境交换指令CTX_ARB再唤醒交换出去的环境。环境交换指令的格式是:
ctx_arb[parameter],optional_token
“parameter(参数)字段可具有若干值之一。如果该参数指定为“sramSwap”,环境交换指令将当前的环境交换出去,并当接收到线程的SRAM信号时唤醒它。该参数也能指定为“FBI”,并交换出当前的环境,而当接收到线程的FBI信号时唤醒它。FBI信号指出,FBI CSR、Scratchpad(便笺存储器)、TFIFO或RFIFO操作已完成。
参数也能规定成“seq_num1_change/seq_num2_change”,它交换出当前的环境并当顺序号的值改变时唤醒它。该参数能指定成“inter_thread”,它交换出当前的环境并当收到线程的线程内信号时唤醒它;也可指定为“Voluntarg”,在其他线程准备运行时交换出当前的环境,否则不交换出环境。如果线程被交换出,使能够自动地在某个后续的环境判优点重使能运行。参数也能是“anto_push”,它交换出当前的环境并当SRAM传输读寄存器数据自动地被FBUS接口压入时唤醒它;参数或者是“Start_receive”,它交换出当前的环境并当在接收FIFO中的新的包数据可用于此线程处理时唤醒它。
该参数也能是“kill”,它防止当前的环境或线程在适当的对该线程的使能位在CTX_ENABLES寄存器中置位以前再次执行;参数或者是“pci”,它交换出当前的环境,并当PCI单位为DMA传输已经完成的信号时唤醒它。
环境交换指令CTX_ARB能具有下述optional_token,defer one,它规定在此环境被交换出以前,此调用后将执行一条指令。
每个微引擎22a-22f支持4个环境的多线程执行。对此的一个理由是允许一个线程紧跟在另一个线程发生存储器调用,并在做其他工作前等待调用完成之后开始执行。此行为对维持微引擎的有效硬件执行是重要的,因为存储器的等待是较大的。换言之,如果只支持单线程执行,微引擎将空闲很大数目的周期等待调用返回存储器,因而减少了整个的计算量。多线程执行允许借助对若干线程完成有用的独立工作而隐藏了存储器等待。提供两个同步机构,以允许一个线程发出SRAM或SDRAM调用,并随后同步到调用完成的时间点。
一个机构是即时同步(Immediate Synchronization)。在即时同步中,微引擎发出调用并立即交换出环境。当对应的调用完成时通知该环境。一旦通知到了,当发生环境交换事件且转向运行时,该环境交换回来以备执行。因此,从单个环境的指令流的观点看,在发出存储器调用以后的微字在调用完成以前未予以执行。
第二个机构是延迟同步(Delayed Synchronization)。在延时同步中,微引擎发出调用,然后继续执行某些其他与该调用无关的有用工作。过了若干时间,必须将线程执行流在另外的工作完成前同步到发出调用的完成。在此时,同步微字被执行,它或者交换出当前的线程,并过若干时间当调用完成时再将其交换回来,或者继续执行当前线程,因为该调用已经完成。使用两个不同的信令方案实现延迟同步。
如果存储器调用与传输寄存器有关,当对应的转移寄存器的有效位置位或清除时产生触发该线程的信号。例如,将数据放入传输寄存器A的SRAM读在A的有效位置位时收到信号。如果存储器调用与传输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控制器的均匀的存储器调用流,并使得在另一个线程被交换出时一个线程总是可用,以便隐藏存储器等待这种情况的概率最大。
寄存器文件地址类型:
参考图6,存在两个寄存器地址空间,当地可访问的寄存器和全局可访问的寄存器,后者可由所有微引擎访问。通用寄存器(GPR)作为两个分别的存储区(A存储区和B存储器)实现,它们的地址逐字交叉,使得A存储区寄存器有lsb=0,B存储区寄存器有lsb=1(lsb是最低有效位)。每个存储区能实现到该存储区中两个不同字的同时读和写。
在存储区A和B内,寄存器组76b也被组织成4个32个寄存器的窗76b0-76b3,它们是每个线程相对可编址。因此,thread_0在77a找到它的寄存器0(寄存器0),thread_1在77b找到它的寄存器_0(寄存器32),thread_2在77c找到它的寄存器_0(寄存器64),而thread_3在77d找到它的寄存器_0(寄存器96)。支持相对编址,使得多线程能使用完全相同的控制存储和位置,而访问不同的寄存器窗并完成不同的功能。使用寄存器窗编址和存储区编址,只要在微引擎22f中采用双口RAM就提供了需要的带宽。
这些分窗的寄存器从环境切换到环境切换不需要保存数据,因而消除了环境交换文件或堆栈的正常压入或弹出。这里的环境切换对于从一个环境改变为另一个具有0周期开销。相对寄存器编址将寄存器存储区按通用寄存器组的地址宽度分成窗。相对编址也允许对于窗起始点访问任何窗。在此结构中也支持绝对编址,通过提供寄存器的精确地址,任何一个绝对寄存器能被任何一个线程访问。
通用寄存器78的编址以两种方式出现,取决于微字的格式。两种方式是绝对方式和相对方式。在绝对方式中,寄存器地址的编址直接在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位目标字段(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设备具有有效的地址空间;但是因为此限止不应用于目标字段,写SRAM/SDRAM仍然使用全部地址空间。
在相对方式中,指定地址的编址是在环境空间中偏移,如5位源字段(a4-a0,或b4-b0)所限定的:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
A GPR:|a4|0|context|a3|a2|a1|a0|a4=0
B GPR:|b4|1|context|b3|b2|b1|b0|b4=0
SRAM/ASB:|ab4|0|ab3|context|b2|b1|ab0|ab4=1,ab3=0
SDRAM:|ab4|0|ab3|context|b2|b1|ab0|ab4=1,ab3=1
或6位目标字段(d5-d0)所定义的:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
A GPR:|d5|d4|context|d3|d2|d1|d0|d5=0,d4=0
B GPR:|d5|d4|context|d3|d2|d1|d0|d5=0,d4=1
SRAM/ASB:|d5|d4|d3|context|d2|d1|d0|d5=1,d4=0,d3=0
SDRAM:|d5|d4|d3|context|d2|d1|d0|d5=1,d4=0,d3=1
如果<d5∶d4>=1,1,则目标地址不编址一个有效寄存器,因此不写回目标操作数。
下面的寄存器可以全局地从微引擎和存储控制器访问:
散列单元寄存器
便笺及公用寄存器
接收FIFO和接收状态FIFO
发送FIFO
发送控制FIFO
微引擎不是中断驱动的。每个微流执行直到完成并然后根据由处理器12中其他设备发信号的状态选择新的流。
参考图7,SDRAM存储器控制器26a包括存储器调用队列90,其中存储器调用请求从各个微引擎22a-22f到达。存储控制器26a包括一个判优器91,它选择下一个微引擎调用请求进入到任何功能单元。假定一个微引擎提供一个调用请求,该调用请求将在SDRAM控制器26a内通过地址和命令队列90。如果该调用请求是由称为“优化的存储器位”的位置位,该进入的调用请求将被排序到偶数存储区队列90a或奇数存储区队列90b。如果该存储器调用请求不具有存储器优化位置位,默认地将进入到一个命令队列90c。SDRAM控制器26是在FBUS接口28、核心处理器20和PCI接口24中共享的资源。SDRAM控制器26还保持一个状态机,用于完成RGAD_MODIFY_Write(读-修改-写)微操作。SDRAM控制器26还完成用于从SDRAM数据请求的字节对齐。
命令队列90c保持从微引擎来的调用请求的命令。对于一系列奇数及偶数存储区的调用,要求信号只有当完成对奇数和偶数存储区的存储器调用序列时才返回。如果微引擎22f将存储器请求排序到奇数数据区,而偶数数据区的调用和数据区之一,如偶数数据区在奇数数据区之前被存储器调用所遗漏,但是信号却认定最后一次偶数调用,存储控制器26a可以想象地将信号发回到完成存储器调用的微引擎,虽然尚未对奇数存储区调用服务。这种情况能引起相干性问题。通过提供命令队列90c,允许微引擎具有多个存储器调用,其中只有奇数最后的存储器调用需要发完成信号,来避免上述情况。
SDRAM控制器26a还包括一个高优先级队列90d。在高优先级队列90d中,从一个微引擎进入的存储器调用直接进入到高优先级队列,并且接比其他队列中的其他存储器调用更高的优先级操作。偶数存储区队列90a、奇数存储区队列90b、命令队列90c和高优先级队列,所有这些队列在单个RAM结构中实现,该结构逻辑上分段成4个不同的窗,每个窗有其自己的头及尾指针。因为充填及漏出操作仅是单个输入和单个输出,它们也能放在同一个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,并随后从EME ASB设备98经过SDRAM接口110移到SDRAM存储器16a。虽然未示出,对读可以提供同样的队列结构。SDRAM控制器26a还包括一个引擎97,将数据从微引擎和PCI总线弹性。
另外队列包括PCI地址队列94和ASB读/写队列96,后者保持一系列请求。存储器请求通过多路复用器106发送到SDRAM接口110。多路复用器106由SDRAM判优器91控制,后者检测每个队列的满度和请求的状态,并由此根据存储在优先级服务控制寄存器100的一个可编程值决定优先级。
一旦对多路复用器106的控制选择一个存储器调用请求,该存储器调用请求送到解码器108,在那里它被解码并产生一个地址。被解码的地址送到SDRAM接口110,在那里它被分解成行和列的地址选通来访问SDRAM16a,并经过将数据送到总线112的数据线16a写或读数据。在一个实施中,总线112实际上是两条分别的总线而不是单个总线。分别的总线包括一个连结到分布微引擎22a-22f的读总线和一个连结到分布式微引擎22a-22f的写总线。
SDRAM控制器26a的特征在于当一个存储器调用存入队列90时,除了可以置位的优化的MEM位以外,有一个“链接位-chaining bit”。链接位在置位时,允许专门处理连续的存储器调用。如前所述,判优器12控制选择哪个微引擎将存储器调用请求经过命令总线提供给队列90(图7)。链接位的确定将控制判优器选择以前请求那个总线的功能单元,因为该链接位置位指出该微引擎发出一个链接请求。
当链接位被置位时,连续的存储器调用将在队列中被接收。那些连续的调用通常被存入命令队列90c,因为该连续的存储器调用是从单个线程来的多重存储器调用。为了提供同步,存储控制器26a只在链接的存储器调用完成的终点需要信号。然而,在一个优化的存储器链中(如当优化的MEM位和链接位被置位),存储器调用能够进入不同的存储区并可能在一个存储区上完成,在其他存储器被完全遗漏以前发出信号“done”,因而破坏相干性。因此,由控制器110使用链接位保持从当前的队列来的存储器调用。
参考图7A,示出在SDRAM控制器26a中判优策略的流程表示。判优策略有利于链接的微引擎存储器请求。过程115通过检查链接的微引擎存储器调用请求115a开始。过程115停留在链接的请求,直到链接位被清除。该过程检查ASB总线请求115b,随后是PCI总线请求115c、高优先级队列服务115d、另一边存储区请求115e、命令队列请求115f和同一存储区请求115g。链接的请求被完全地服务,而服务115b-115d以循环的次序服务。仅当服务115a-115d被完全地跳过,过程才处理服务115e-115g。链接的微引擎存储器调用请求是在以前SDRAM存储器请求已置位了链接位的时刻。当链接位被置位时,判优引擎简单地再次服务同一队列,直到链接被清除。因为当ASB处于等待状态时在Strong Arm核心上产生严重的性能损失,ASB比PCI有更高的优先级。由于PCI的等待要求PCI具有比微引擎更高的优先级。然而对其他总线,判优的优先级可以是不同的。
如图7B所示,其中示出没有激活的存储器优化及带有激活的存储器优化的通常时序。可以看到,使用激活的存储器优化使总线的使用最大,因而隐藏了在实际的SDRAM设备中的固有等待。在此例中,非优化的访问可占14个周期,而优化的访问占7个周期。
参考图8,其中示出对SRAM的存储控制器26b。存储控制器26b包括一个地址和命令队列120。虽然存储控制器26a(图7)具有一个用于根据奇数或偶数存储区的存储器优化的队列,存储控制器26b根据存储器操作的类型,即读或写优化。地址和命令队列120包括一个高优先级队列120a、一个作为SRAM完成的起支配作用的存储器调用功能的读队列120b、和一个命令队列120c,后者通常包括所有到SRAM的写和未优化的读。虽然未显示,地址和命令队列120也能包括一个写队列。
SRAM控制器26b还包括核心总线接口逻辑,即ASB总线122。ASB总线接口逻辑122将核心处理器20接口到SRAM控制器26b。ASB总线是包括32位数据线和28位地址线的总线。通过如缓冲器那样的MEM ASB数据设备128,数据被存入存储器或从中取出。MEM ASB数据设备128是用于写数据的队列。如果有从核心处理器20经过ASB接口122进入的数据,数据能存入MEM ASB设备128,并随后从MEM设备128通过SRAM接口140移到SRAM存储器16b。虽然未显示,对读能提出同样的队列结构。SRAM控制器26b还包括一个将数据从微引擎和PCI总线弹出的引擎127。
存储器请求经过多路复用器126被送到SRAM接口140。多路复用器126由SRAM判优器131控制,后者检测每个队列的满度及请求的状态,并由此根据储存在优先级服务控制寄存器130的可编程值决定优先级。一旦对多路复用器126的控制选择了一个存储器调用请求,该存储器调用请求被送到解码器138,在那里被解码并产生地址。
SRAM单元保持对存储器映射芯片外的SRAM(Memory Mapped off-chipSRAM)及扩展ROM的控制。SRAM控制器26b可选址如16兆字节,其中如8兆字节对SRAM16b映射,且8兆字节保留用于特定功能,包括:由闪存ROM 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还包括一个读锁定失效(Read Lock Fai1)队列120d。该读锁定失效队列120d被用于保存由于在存储器的一个部分锁定引起失效的读存储器调用请求。即,一个微引擎发出一个具有读锁定请求的存储器请求,它在地址和控制队列120中被处理。存储器请求将在命令队列120c或读队列120b上操作,且作为读锁定请求识别。控制器26b访问锁定查找设备142以确定此存储器位置是否已被锁定。如果此存储器位置被从任何以前读锁定请求所锁定,则此存储器锁定请求将失败,并将其存入读锁定失效队列120d。如果它未被锁定,或如果142示出在那个地址未锁定,则该存储器调用的地址将被SRAM接口140使用以完成对存储器16b的SRAM地址读/写请求。命令控制器和地址生成器138还将锁定输入到锁定查找设备142,使得后续的读锁定请求将找到锁定的存储器位置。在锁定的需要结束以后通过程序中微控制指令的操作,解锁存储器位置。该位置通过清除在CAM中的有效位解锁。在解锁以后,读锁定失效队列120d成为最高优先级队列,给所有排队未得到读锁定的请求,一个发出存储器锁定请求的机会。
参考图9,其中示出在微引擎22和FBUS接口逻辑(FBI)之间的通讯。在网络应用中的FBUS接口28能完成从FBUS18进入的包的首部处理。FBUS接口完成的关键功能是提取包的首部,和在SRAM中可微编程的源/目标/协议的散列查找。如果散列未成功地分解,促使包的首部被送到核心处理器28用于更复杂的处理。
FBI28包含一个发送FIFO182、一个接收FIFO183、一个散列单元188和FBI控制及状态寄存器189。这4个单元通过对连接到微引擎中的传输寄存器78,80的SRAM总线38的时间一多路复用访问,与微引擎22通信。即,所有与微引擎的通信通过传输寄存器78,80。FBUS接口28包括一个压入状态机200,用于将数据在SRAM不使用SRAM数据总线(总线38的部分)的时间周期内压入转输寄存器,还包括一个弹出状态机202,用于从对应的微引擎中的传输寄存器取得数据。
散列单元包括一对FIFO=S,188a,188b。散列单元确定,FBI28接收FBI_hash请求。散列单元188从调用的微引擎22取得散列键。在键被取得并散列以后,其索引被送回到调用的微引擎22。在单个FBI_hash请求下完成最多到3个散列。总线34和38均为单向的:SDRAM_push/pull_data,和Sbus_push/pull_data。这些总线的每一个需要控制信号,它向适当的微引擎22的传输寄存器提供读/写控制。
通常,传输寄存器需要保护以免环境控制它们,以便保证读出的正确性。特别是,如果一个写传输寄存器被thread_1使用以提供数据到SDRAM 16a,thread_1必须不改写此寄存器直到从SDRAM控制器26a回来信号,指出此寄存器已被激励并现在可以重新使用。每次写不需要从目标返回信号,指出此功能已完成,因为,如果该线程带着多个请求写入在那个目标的同一命令队列,保证在那个命令队列中完成的次序,因此只有最后的命令需要发回信号到该线程。但是,如果该线程使用多个命令队列(读队列和命令队列),则这些命令请求必须分解成各个环境任务,使得通过环境交换保持次序。在本章节开头指出的例外情况与某种类型的操作有关,这些操作使用未经请求的PUSH从用于FBUS状态信息的FBI推到传输寄存器。为了保护对传输寄存器的读/写确定性,在建立这些特定的FBI压入操作时,FBI提供专门的Push_protect(压入保护)信号。
任何使用FBI未经请求压入技术的微引擎22在访问与传输寄存器一致的FBUS接口/微引擎以前必须检测保护标志。如果该标志不断定,则该传输寄存器由该微引擎访问。如果该标志断定,则该环境在访问该寄存器前应等待N周期。推测的计数由进行压入的传输寄存器数加上前端保护窗来确定。基本概念是,微引擎必须检测此标志,然后在连接周期内很快地将希望从读传输寄存器读出的数据移到GPR,使得压入引擎与微引擎读不冲突。
其他实施例在下面权利要求的范围内。
Claims (10)
1.一种基于硬件的多线程处理器,其特征在于包括:
多个微引擎,每一个所述微引擎包括:
控制存储;
控制器逻辑;
环境事件切换逻辑;和
执行箱数据通道,它包括一个算术逻辑单元ALU和一个通用寄存器组,所述算术逻辑单元响应于指令而执行功能,所述指令之一使得所述算术逻辑单元会
根据当前的环境号是否匹配指定的环境号使一个指令流转移到具有在指定标号处地址的另一个指令流。
2.如权利要求1所述的处理器,其特征在于,所述指令具有下述格式
br=ctx[ctx,label#],optional_token
br!=ctx[ctx,label#],optional_token
其中br=ctx以及br!=ctx是环境转移指令,label#是对应于一条指令的地址的符号标号,ctx是环境号,optional_token包括一个值,该值表明处理器在完成转移操作前执行的转移指令后面的指令数目。
3.如权利要求2所述的处理器,其特征在于,所述的环境号具有有效值1,2或3。
4.如权利要求2所述的处理器,其特征在于,所述optional_token值为“defer one”,其中“defer one”值引起所述处理器在完成转移操作之前执行转移指令后面的指令。
5.一种操作处理器的方法,其特征在于,包括下述步骤:
估算一个执行环境的环境号以确定该执行环境的环境号是否匹配指定的环境号;且
按照估算的执行环境的环境号,转移到一条指定的指令。
6.如权利要求5所述的方法,其特征在于,所述转移进一步包括:
如果执行环境号匹配指定的环境号就转移。
7.如权利要求5所述的方法,其特征在于,所述的环境号具有有效值0、1、2或3。
8.一种能执行多个环境的处理器,其特征在于,它包括:
一个寄存器堆栈;
用于每个执行环境的程序计数器;
连接到寄存器堆栈的算术逻辑单元和存储环境交换指令的程序控制存储部件,所述指令使处理器执行:
估算一个执行环境的环境号以确定该执行环境的环境号是否匹配指定的环境号;且
按照估算的执行环境的环境号,转移到一条指定的指令。
9.如权利要求8所述的处理器,其特征在于,如果所述执行环境的号匹配指定的环境号,则发生转移。
10.如权利要求8所述的处理器,其特征在于,所述的环境号具有有效值0、1、2或3。
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 |
---|---|
CN1402846A CN1402846A (zh) | 2003-03-12 |
CN1271513C true CN1271513C (zh) | 2006-08-23 |
Family
ID=22540994
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154309A Expired - Fee Related CN1254739C (zh) | 1999-09-01 | 2000-08-31 | 处理器和操作处理器的方法 |
CNB008144966A Expired - Fee Related CN100474236C (zh) | 1999-09-01 | 2000-08-31 | 多线程并行处理器及其维持线程执行的方法 |
CNB008154376A Expired - Fee Related CN1184562C (zh) | 1999-09-01 | 2000-08-31 | 处理器的转移指令 |
CNB008151237A Expired - Fee Related CN1296818C (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 (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154309A Expired - Fee Related CN1254739C (zh) | 1999-09-01 | 2000-08-31 | 处理器和操作处理器的方法 |
CNB008144966A Expired - Fee Related CN100474236C (zh) | 1999-09-01 | 2000-08-31 | 多线程并行处理器及其维持线程执行的方法 |
CNB008154376A Expired - Fee Related CN1184562C (zh) | 1999-09-01 | 2000-08-31 | 处理器的转移指令 |
CNB008151237A Expired - Fee Related CN1296818C (zh) | 1999-09-01 | 2000-08-31 | 用于多线程并行处理器的指令 |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154171A Expired - Fee Related CN100342326C (zh) | 1999-09-01 | 2000-08-31 | 多线程处理器和操作处理器的方法 |
CNB008154120A Expired - Fee Related CN100351781C (zh) | 1999-09-01 | 2000-09-01 | 多线程并行处理器结构中所用的微引擎的存储器引用指令 |
Country Status (10)
Country | Link |
---|---|
US (1) | US7421572B1 (zh) |
EP (7) | EP1236092A4 (zh) |
CN (7) | CN1254739C (zh) |
AT (2) | ATE475930T1 (zh) |
AU (11) | AU7340700A (zh) |
CA (7) | CA2383532A1 (zh) |
DE (2) | DE60044752D1 (zh) |
HK (8) | HK1046049A1 (zh) |
TW (11) | TW559729B (zh) |
WO (8) | WO2001018646A1 (zh) |
Families Citing this family (49)
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 |
WO2001018646A1 (en) | 1999-09-01 | 2001-03-15 | Intel Corporation | Branch instruction for multithreaded processor |
US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine 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 |
US7020871B2 (en) | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US7292586B2 (en) | 2001-03-30 | 2007-11-06 | Nokia Inc. | Micro-programmable protocol packet parser and encapsulator |
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 |
US6868476B2 (en) | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
US6785793B2 (en) * | 2001-09-27 | 2004-08-31 | Intel Corporation | Method and apparatus for memory access scheduling to reduce memory access latency |
SG155038A1 (en) * | 2001-09-28 | 2009-09-30 | Consentry Networks Inc | A multi-threaded packet processing engine for stateful packet processing |
US7610451B2 (en) | 2002-01-25 | 2009-10-27 | Intel Corporation | Data transfer mechanism using unidirectional pull bus and push bus |
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 |
US7337275B2 (en) | 2002-08-13 | 2008-02-26 | Intel Corporation | Free list and ring data structure management |
US6941438B2 (en) | 2003-01-10 | 2005-09-06 | Intel Corporation | Memory interleaving |
GB2409062C (en) | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
US7027062B2 (en) * | 2004-02-27 | 2006-04-11 | Nvidia Corporation | Register based queuing for texture requests |
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
GB0420442D0 (en) * | 2004-09-14 | 2004-10-20 | Ignios Ltd | 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 |
US8645618B2 (en) * | 2011-07-14 | 2014-02-04 | Lsi Corporation | Flexible flash commands |
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 | 삼성전자주식회사 | 메모리 스와핑 처리 방법과 이를 적용하는 호스트 장치, 스토리지 장치 및 데이터 처리 시스템 |
CN103984235B (zh) * | 2014-05-27 | 2016-05-11 | 湖南大学 | 基于c/s结构的空间机械臂控制系统软件架构及构建方法 |
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 |
BR112019010679A2 (pt) | 2016-12-31 | 2019-09-17 | Intel Corp | sistemas, métodos e aparelhos para computação heterogênea |
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 (356)
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 |
JPS59111533U (ja) | 1983-01-19 | 1984-07-27 | 株式会社池田地球 | 手提鞄の提手取付具 |
JPS6014338A (ja) | 1983-06-30 | 1985-01-24 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 計算機システムにおける分岐機構 |
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 |
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 |
US4754398A (en) * | 1985-06-28 | 1988-06-28 | Cray Research, Inc. | System for multiprocessor communication using local and common semaphore and information registers |
US4755966A (en) | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
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 |
EP0374419A3 (en) | 1988-12-21 | 1991-04-10 | International Business Machines Corporation | Method and apparatus for efficient loop constructs in hardware and microcode |
US5202972A (en) | 1988-12-29 | 1993-04-13 | International Business Machines Corporation | Store buffer apparatus in a multiprocessor system |
US5046000A (en) | 1989-01-27 | 1991-09-03 | International Business Machines Corporation | Single-FIFO high speed combining switch |
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 |
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 |
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 |
DE69132495T2 (de) | 1990-03-16 | 2001-06-13 | Texas Instruments Inc., Dallas | Verteilter Verarbeitungsspeicher |
JPH0799812B2 (ja) * | 1990-03-26 | 1995-10-25 | 株式会社グラフイックス・コミュニケーション・テクノロジーズ | 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置 |
DE69129872T2 (de) | 1990-03-27 | 1999-03-04 | Philips Electronics N.V., Eindhoven | Datenverarbeitungssystem mit einem leistungsverbessernden Befehlscachespeicher |
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 | マイクロコンピュータ |
AU633724B2 (en) | 1990-06-29 | 1993-02-04 | Digital Equipment Corporation | Interlock queueing |
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 |
CA2045790A1 (en) | 1990-06-29 | 1991-12-30 | Richard Lee Sites | Branch prediction in high-performance processor |
AU630299B2 (en) | 1990-07-10 | 1992-10-22 | Fujitsu Limited | A data gathering/scattering system in a parallel computer |
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 |
US5956514A (en) | 1991-04-12 | 1999-09-21 | Boeing North American, Inc. | Apparatus and method for multiple processor software development |
KR960001273B1 (ko) | 1991-04-30 | 1996-01-25 | 가부시키가이샤 도시바 | 단일칩 마이크로컴퓨터 |
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 |
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 |
US5557766A (en) | 1991-10-21 | 1996-09-17 | Kabushiki Kaisha Toshiba | High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank |
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 |
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 |
US5442756A (en) | 1992-07-31 | 1995-08-15 | Intel Corporation | Branch prediction and resolution apparatus for a superscalar computer processor |
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 |
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 |
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 |
JPH06161873A (ja) | 1992-11-27 | 1994-06-10 | Fujitsu Ltd | 主記憶に対する複数のアクセスポイントのハングアップ処理方式 |
US5450603A (en) | 1992-12-18 | 1995-09-12 | Xerox Corporation | SIMD architecture with transfer register or value source circuitry connected to bus |
CA2128393C (en) | 1992-12-23 | 2001-10-02 | Jean-Felix Perotto | Multi-tasking low-power controller |
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 |
EP0617361B1 (en) | 1993-03-26 | 2001-11-28 | Cabletron Systems, Inc. | Scheduling method and apparatus for a communication network |
US6311286B1 (en) | 1993-04-30 | 2001-10-30 | Nec 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 |
JP3203401B2 (ja) | 1993-05-21 | 2001-08-27 | 三菱電機株式会社 | データ処理装置 |
ES2148197T3 (es) | 1993-06-29 | 2000-10-16 | Cit Alcatel | Metodo de resecuenciacion y dispositivo de resecuenciacion que realiza tal metodo. |
US5363448A (en) | 1993-06-30 | 1994-11-08 | United Technologies Automotive, Inc. | Pseudorandom number generation and cryptographic authentication |
JP3452655B2 (ja) | 1993-09-27 | 2003-09-29 | 株式会社日立製作所 | ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法 |
CA2107299C (en) | 1993-09-29 | 1997-02-25 | Mehrad Yasrebi | High performance machine for switched communications in a heterogenous data processing network gateway |
US6141689A (en) | 1993-10-01 | 2000-10-31 | International Business Machines Corp. | Method and mechanism for allocating switched communications ports in a heterogeneous 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 |
EP0650117B1 (en) | 1993-10-21 | 2002-04-10 | Sun Microsystems, Inc. | Counterflow pipeline |
EP0650116B1 (en) | 1993-10-21 | 1998-12-09 | Sun Microsystems, Inc. | Counterflow pipeline processor |
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 |
US5848276A (en) | 1993-12-06 | 1998-12-08 | Cpu Technology, Inc. | High speed, direct register access operation for parallel processing units |
US5487159A (en) | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
DE69420540T2 (de) | 1994-01-03 | 2000-02-10 | Intel Corp., Santa Clara | Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor |
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 | 株式会社日立製作所 | 情報処理装置 |
AUPM519694A0 (en) | 1994-04-19 | 1994-05-12 | Griffith University | Method for testing and debugging computer programs |
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 |
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 |
FR2722041B1 (fr) * | 1994-06-30 | 1998-01-02 | Samsung Electronics Co Ltd | Decodeur de huffman |
JP3810449B2 (ja) | 1994-07-20 | 2006-08-16 | 富士通株式会社 | キュー装置 |
US5860085A (en) | 1994-08-01 | 1999-01-12 | Cypress Semiconductor Corporation | Instruction set for a content addressable memory array with read/write circuits and an interface register logic block |
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 |
US5748950A (en) | 1994-09-20 | 1998-05-05 | Intel Corporation | Method and apparatus for providing an optimized compare-and-branch instruction |
US5717760A (en) | 1994-11-09 | 1998-02-10 | Channel One Communications, Inc. | Message protection system and method |
JP3725547B2 (ja) * | 1994-12-02 | 2005-12-14 | ヒュンダイ エレクトロニクス アメリカ インコーポレイテッド | 限定ラン分岐予測 |
JP3169779B2 (ja) | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US5610864A (en) | 1994-12-23 | 1997-03-11 | Micron Technology, Inc. | Burst EDO memory device with maximized write cycle timing |
JPH08272648A (ja) | 1994-12-29 | 1996-10-18 | Hitachi Ltd | デバッグコマンドファイルを自動的に生成する方法、およびデバッグコマンドファイルにおいてブレークポイントを自動的に再生成する装置 |
US5550816A (en) | 1994-12-29 | 1996-08-27 | Storage Technology Corporation | Method and apparatus for virtual switching |
US5812811A (en) | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
US5784712A (en) | 1995-03-01 | 1998-07-21 | Unisys Corporation | Method and apparatus for locally generating addressing information for a memory access |
US5649157A (en) | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US5651137A (en) | 1995-04-12 | 1997-07-22 | Intel Corporation | Scalable cache attributes for an input/output bus |
TW360852B (en) | 1995-04-12 | 1999-06-11 | Matsushita Electric Ind Co Ltd | Pipeline processor |
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 |
US5704054A (en) | 1995-05-09 | 1997-12-30 | Yale University | Counterflow pipeline processor architecture for semi-custom application specific IC's |
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 |
GB9509987D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
GB9509989D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Manipulation of data |
GB9509983D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Replication of data |
GB9509988D0 (en) | 1995-05-17 | 1995-07-12 | Sgs Thomson Microelectronics | Matrix transposition |
JPH08320797A (ja) | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
US5680564A (en) | 1995-05-26 | 1997-10-21 | National Semiconductor Corporation | Pipelined processor with two tier prefetch buffer structure and method with bypass |
US5644780A (en) | 1995-06-02 | 1997-07-01 | International Business Machines Corporation | Multiple port high speed register file with interleaved write ports for use with very long instruction word (vlin) and n-way superscaler processors |
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 |
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 | 배순훈 | 가변길이 부호기 |
GB9513515D0 (en) | 1995-07-03 | 1995-09-06 | Sgs Thomson Microelectronics | Expansion of data |
US5613071A (en) | 1995-07-14 | 1997-03-18 | Intel Corporation | Method and apparatus for providing remote memory access in a distributed memory multiprocessor system |
GB9514695D0 (en) | 1995-07-18 | 1995-09-13 | Sgs Thomson Microelectronics | Combining data values |
GB9514684D0 (en) | 1995-07-18 | 1995-09-13 | Sgs Thomson Microelectronics | An arithmetic unit |
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 |
US5900025A (en) | 1995-09-12 | 1999-05-04 | Zsp Corporation | Processor having a hierarchical control register file and methods for operating the same |
US5940612A (en) | 1995-09-27 | 1999-08-17 | International Business Machines Corporation | System and method for queuing of tasks in a multiprocessing system |
US5875470A (en) | 1995-09-28 | 1999-02-23 | International Business Machines Corporation | Multi-port multiple-simultaneous-access DRAM chip |
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 |
US5940866A (en) | 1995-12-13 | 1999-08-17 | International Business Machines Corporation | Information handling system having a local address queue for local storage of command blocks transferred from a host processing side |
US5699537A (en) | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
US5787454A (en) | 1995-12-27 | 1998-07-28 | Intel Corporation | Recorder buffer with interleaving mechanism for accessing a multi-parted circular memory array |
EP0870386B1 (de) | 1995-12-29 | 2000-04-12 | Tixi.Com GmbH Telecommunication | Verfahren und mikrocomputersystem zur automatischen, sicheren und direkten datenübertragung |
US5819080A (en) | 1996-01-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |
US5802373A (en) | 1996-01-29 | 1998-09-01 | Digital Equipment Corporation | Method for providing a pipeline interpreter for a variable length instruction set |
US6201807B1 (en) | 1996-02-27 | 2001-03-13 | Lucent Technologies | Real-time hardware method and apparatus for reducing queue processing |
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 |
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 | 윤종용 | 씨디-롬 드라이브에서의 큐잉 제어 방법 |
GB2311882B (en) | 1996-04-04 | 2000-08-09 | Videologic Ltd | A data processing management system |
US5944816A (en) | 1996-05-17 | 1999-08-31 | Advanced Micro Devices, Inc. | Microprocessor configured to execute multiple threads including interrupt service routines |
JPH1091443A (ja) | 1996-05-22 | 1998-04-10 | Seiko Epson Corp | 情報処理回路、マイクロコンピュータ及び電子機器 |
US5946487A (en) | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
KR980004067A (ko) | 1996-06-25 | 1998-03-30 | 김광호 | 멀티프로세서 시스템의 데이터 송수신장치 및 방법 |
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 |
US5933627A (en) | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6023742A (en) | 1996-07-18 | 2000-02-08 | University Of Washington | Reconfigurable computing architecture for providing pipelined data paths |
JP3745039B2 (ja) | 1996-08-01 | 2006-02-15 | 株式会社ルネサステクノロジ | 遅延命令を有するマイクロプロセッサ |
US5745913A (en) | 1996-08-05 | 1998-04-28 | Exponential Technology, Inc. | Multi-processor DRAM controller that prioritizes row-miss requests to stale banks |
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 |
EP1291765B1 (en) * | 1996-08-27 | 2009-12-30 | Panasonic Corporation | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US5812868A (en) | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US5937177A (en) | 1996-10-01 | 1999-08-10 | Sun Microsystems, Inc. | Control structure for a high-speed asynchronous pipeline |
US6072781A (en) | 1996-10-22 | 2000-06-06 | International Business Machines Corporation | Multi-tasking adapter for parallel network applications |
DE69718278T2 (de) | 1996-10-31 | 2003-08-21 | Texas Instruments Inc., Dallas | Methode und System zur Einzel-Zyklus-Ausführung aufeinanderfolgender Iterationen einer Befehlsschleife |
US5860158A (en) | 1996-11-15 | 1999-01-12 | Samsung Electronics Company, Ltd. | Cache control unit with a cache request transaction-oriented protocol |
US5857104A (en) | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
US6009505A (en) | 1996-12-02 | 1999-12-28 | Compaq Computer Corp. | System and method for routing one operand to arithmetic logic units from fixed register slots and another operand from any register slot |
CN1153133C (zh) | 1996-12-09 | 2004-06-09 | 松下电器产业株式会社 | 采用小规模硬件作高命中率分支预测的信息处理装置 |
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 |
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 |
US5946222A (en) | 1996-12-20 | 1999-08-31 | Oak Technology, Inc. | Method and apparatus for performing a masked byte addition operation |
US6088788A (en) * | 1996-12-27 | 2000-07-11 | International Business Machines Corporation | Background completion of instruction and associated fetch request in a multithread processor |
US6098110A (en) | 1996-12-30 | 2000-08-01 | Compaq Computer Corporation | Network switch with a multiple bus structure and a bridge interface for transferring network data between different buses |
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 |
US5854922A (en) | 1997-01-16 | 1998-12-29 | Ford Motor Company | Micro-sequencer apparatus and method of combination state machine and instruction memory |
US5961628A (en) | 1997-01-28 | 1999-10-05 | Samsung Electronics Co., Ltd. | Load and store unit for a vector processor |
US5872963A (en) | 1997-02-18 | 1999-02-16 | Silicon Graphics, Inc. | Resumption of preempted non-privileged threads with no kernel intervention |
US6256115B1 (en) | 1997-02-21 | 2001-07-03 | Worldquest Network, Inc. | Facsimile network |
US6269391B1 (en) | 1997-02-24 | 2001-07-31 | Novell, Inc. | Multi-processor scheduling kernel |
US5742587A (en) | 1997-02-28 | 1998-04-21 | Lanart Corporation | Load balancing port switching hub |
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 |
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 |
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 |
US6298370B1 (en) | 1997-04-04 | 2001-10-02 | Texas Instruments Incorporated | Computer operating process allocating tasks between first and second processors at run time based upon current processor load |
US5983274A (en) | 1997-05-08 | 1999-11-09 | Microsoft Corporation | Creation and use of control information associated with packetized network data by protocol drivers and device drivers |
US6141765A (en) | 1997-05-19 | 2000-10-31 | Gigabus, Inc. | Low power, high speed communications bus |
KR100212064B1 (ko) | 1997-05-21 | 1999-08-02 | 윤종용 | 2n X n 다중화 스위치 구조 |
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 |
US6139199A (en) | 1997-06-11 | 2000-10-31 | Sun Microsystems, Inc. | Fast just-in-time (JIT) scheduler |
US6092158A (en) | 1997-06-13 | 2000-07-18 | Intel Corporation | Method and apparatus for arbitrating between command streams |
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 |
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 |
US5993627A (en) | 1997-06-24 | 1999-11-30 | Large Scale Biology Corporation | Automated system for two-dimensional electrophoresis |
US5870597A (en) | 1997-06-25 | 1999-02-09 | Sun Microsystems, Inc. | Method for speculative calculation of physical register addresses in an out of order processor |
KR100216371B1 (ko) | 1997-06-30 | 1999-08-16 | 윤종용 | 고장 감내형 대용량 ATM 스위치 및 2nXn 다중화스위치에서의 셀프라우팅 방법 |
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 |
US6393483B1 (en) | 1997-06-30 | 2002-05-21 | Adaptec, Inc. | Method and apparatus for network interface card load balancing and port aggregation |
US5938736A (en) | 1997-06-30 | 1999-08-17 | Sun Microsystems, Inc. | Search engine architecture for a high performance multi-layer switch element |
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 |
US6247025B1 (en) | 1997-07-17 | 2001-06-12 | International Business Machines Corporation | Locking and unlocking mechanism for controlling concurrent access to objects |
US6157988A (en) | 1997-08-01 | 2000-12-05 | Micron Technology, Inc. | Method and apparatus for high performance branching in pipelined microsystems |
US6141348A (en) | 1997-08-25 | 2000-10-31 | Cisco Technology, Inc. | Constant-time programmable field extraction system and method |
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 |
US6014729A (en) | 1997-09-29 | 2000-01-11 | Firstpass, Inc. | Shared memory arbitration apparatus and method |
US6223208B1 (en) | 1997-10-03 | 2001-04-24 | International Business Machines Corporation | Moving data in and out of processor units using idle register/storage functional units |
UA55489C2 (uk) * | 1997-10-07 | 2003-04-15 | Каналь+ Сосьєте Анонім | Пристрій для багатопотокової обробки даних (варіанти) |
US5943491A (en) | 1997-10-20 | 1999-08-24 | Sun Microsystems, Inc. | Control circuit of mutual exclusion elements |
US6697935B1 (en) | 1997-10-23 | 2004-02-24 | International Business Machines Corporation | Method and apparatus for selecting thread switch events in a multithreaded processor |
US6567839B1 (en) * | 1997-10-23 | 2003-05-20 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
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 |
US6279066B1 (en) | 1997-11-14 | 2001-08-21 | Agere Systems Guardian Corp. | System for negotiating access to a shared resource by arbitration logic in a shared resource negotiator |
US6223277B1 (en) | 1997-11-21 | 2001-04-24 | Texas Instruments Incorporated | Data processing circuit with packed data structure capability |
US6360262B1 (en) | 1997-11-24 | 2002-03-19 | International Business Machines Corporation | Mapping web server objects to TCP/IP ports |
US5923872A (en) | 1997-11-26 | 1999-07-13 | Digital Equipment Corporation | Apparatus for sampling instruction operand or result values in a processor pipeline |
US6070231A (en) | 1997-12-02 | 2000-05-30 | Intel Corporation | Method and apparatus for processing memory requests that require coherency transactions |
US6144669A (en) | 1997-12-12 | 2000-11-07 | Newbridge Networks Corporation | Prioritized PVC management queues for improved frame processing capabilities |
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 |
US6259699B1 (en) | 1997-12-30 | 2001-07-10 | Nexabit Networks, Llc | System architecture for and method of processing packets and/or cells in a common switch |
JPH11203860A (ja) | 1998-01-07 | 1999-07-30 | Nec Corp | 半導体記憶装置 |
US6134665A (en) | 1998-01-20 | 2000-10-17 | Digital Equipment Corporation | Computer with remote wake up and transmission of a status packet when the computer fails a self test |
US6145054A (en) | 1998-01-21 | 2000-11-07 | Sun Microsystems, Inc. | Apparatus and method for handling multiple mergeable misses in a non-blocking cache |
US6230119B1 (en) | 1998-02-06 | 2001-05-08 | Patrick Michael Mitchell | Integrated circuit with embedded emulator and emulation system for use with such an integrated circuit |
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 |
US5970013A (en) | 1998-02-26 | 1999-10-19 | Lucent Technologies Inc. | Adaptive addressable circuit redundancy method and apparatus with broadcast write |
US6205468B1 (en) | 1998-03-10 | 2001-03-20 | Lucent Technologies, Inc. | System for multitasking management employing context controller having event vector selection by priority encoding of contex events |
US6446190B1 (en) | 1998-03-12 | 2002-09-03 | Bops, Inc. | Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor |
US6279113B1 (en) | 1998-03-16 | 2001-08-21 | Internet Tools, Inc. | Dynamic signature inspection-based network intrusion detection |
US6005575A (en) | 1998-03-23 | 1999-12-21 | Microsoft Corporation | Foreground window determination through process and thread initialization |
US6052769A (en) | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6223238B1 (en) | 1998-03-31 | 2001-04-24 | Micron Electronics, Inc. | Method of peer-to-peer mastering over a computer bus |
US6092175A (en) | 1998-04-02 | 2000-07-18 | University Of Washington | Shared register storage mechanisms for multithreaded computer systems with out-of-order execution |
US6079008A (en) | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
KR100280460B1 (ko) | 1998-04-08 | 2001-02-01 | 김영환 | 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 |
US6275508B1 (en) | 1998-04-21 | 2001-08-14 | Nexabit Networks, Llc | Method of and system for processing datagram headers for high speed computer network interfaces at low clock speeds, utilizing scalable algorithms for performing such network header adaptation (SAPNA) |
US6115777A (en) | 1998-04-21 | 2000-09-05 | Idea Corporation | LOADRS instruction and asynchronous context switch |
US6408325B1 (en) | 1998-05-06 | 2002-06-18 | Sun Microsystems, Inc. | Context switching technique for processors with large register files |
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 |
US6496847B1 (en) | 1998-05-15 | 2002-12-17 | Vmware, Inc. | System and method for virtualizing computer systems |
EP0961181A1 (en) | 1998-05-29 | 1999-12-01 | Denso Corporation | Hologram and process for producing hologram |
US6275505B1 (en) | 1998-05-30 | 2001-08-14 | Alcatel Canada Inc. | Method and apparatus for packetizing data into a data stream |
US6157955A (en) | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6272616B1 (en) | 1998-06-17 | 2001-08-07 | Agere Systems Guardian Corp. | Method and apparatus for executing multiple instruction streams in a digital processor with multiple data paths |
US6434145B1 (en) | 1998-06-22 | 2002-08-13 | Applied Micro Circuits Corporation | Processing of network data by parallel processing channels |
US6101599A (en) | 1998-06-29 | 2000-08-08 | Cisco Technology, Inc. | System for context switching between processing elements in a pipeline of processing elements |
US6195739B1 (en) | 1998-06-29 | 2001-02-27 | Cisco Technology, Inc. | Method and apparatus for passing data among processor complex stages of a pipelined processing engine |
US6836838B1 (en) | 1998-06-29 | 2004-12-28 | Cisco Technology, Inc. | Architecture for a processor complex of an arrayed pipelined processing engine |
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) |
US6073215A (en) | 1998-08-03 | 2000-06-06 | Motorola, Inc. | Data processing system having a data prefetch mechanism and method therefor |
US6160562A (en) | 1998-08-18 | 2000-12-12 | Compaq Computer Corporation | System and method for aligning an initial cache line of data read from local memory by an input/output device |
US6564316B1 (en) | 1998-09-10 | 2003-05-13 | Parthusceva Ltd. | Method and apparatus for reducing code size by executing no operation instructions that are not explicitly included in code using programmable delay slots |
US6505229B1 (en) | 1998-09-25 | 2003-01-07 | Intelect Communications, Inc. | Method for allowing multiple processing threads and tasks to execute on one or more processor units for embedded real-time processor systems |
US6356962B1 (en) | 1998-09-30 | 2002-03-12 | Stmicroelectronics, Inc. | Network device and method of controlling flow of data arranged in frames in a data-based network |
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 |
US6560629B1 (en) * | 1998-10-30 | 2003-05-06 | Sun Microsystems, Inc. | Multi-thread processing |
US6212611B1 (en) | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
US6230261B1 (en) | 1998-12-02 | 2001-05-08 | I. P. First, L.L.C. | Method and apparatus for predicting conditional branch instruction outcome based on branch condition test type |
US6718457B2 (en) | 1998-12-03 | 2004-04-06 | Sun Microsystems, Inc. | Multiple-thread processor for threaded software applications |
US6230230B1 (en) | 1998-12-03 | 2001-05-08 | Sun Microsystems, Inc. | Elimination of traps and atomics in thread synchronization |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6401155B1 (en) | 1998-12-22 | 2002-06-04 | Philips Electronics North America Corporation | Interrupt/software-controlled thread processing |
US6378124B1 (en) | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread synchronization control points |
US6378125B1 (en) | 1999-02-22 | 2002-04-23 | International Business Machines Corporation | Debugger thread identification points |
US6574702B2 (en) | 1999-02-23 | 2003-06-03 | Netlogic Microsystems, Inc. | Method and apparatus for determining an exact match in a content addressable memory device |
US6338133B1 (en) | 1999-03-12 | 2002-01-08 | International Business Machines Corporation | Measured, allocation of speculative branch instructions to processor execution units |
US6304956B1 (en) | 1999-03-25 | 2001-10-16 | Rise Technology Company | Using two barrel shifters to implement shift, rotate, rotate with carry, and shift double as specified by the X86 architecture |
US6314510B1 (en) | 1999-04-14 | 2001-11-06 | Sun Microsystems, Inc. | Microprocessor with reduced context switching overhead and corresponding method |
US6256713B1 (en) | 1999-04-29 | 2001-07-03 | International Business Machines Corporation | Bus optimization with read/write coherence including ordering responsive to collisions |
US6351808B1 (en) | 1999-05-11 | 2002-02-26 | Sun Microsystems, Inc. | Vertically and horizontally threaded processor with multidimensional storage for storing thread data |
KR20010025178A (ko) | 1999-08-27 | 2001-04-06 | 체시바사트 위차이 | 푸에라리아 미리피카, 부테아 수페르바 및/또는 무쿠나콜레티 유래의 추출물 및 그 추출방법, 상기 추출물을유효성분으로 함유하는 식품, 음료, 약 및/또는 화장품 및그 제조방법 |
US6427196B1 (en) | 1999-08-31 | 2002-07-30 | Intel Corporation | SRAM controller for parallel processor architecture including address and command queue and arbiter |
US6668317B1 (en) | 1999-08-31 | 2003-12-23 | Intel Corporation | Microengine 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 |
US6983350B1 (en) | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
WO2001018646A1 (en) | 1999-09-01 | 2001-03-15 | Intel Corporation | Branch instruction for multithreaded processor |
WO2001016697A2 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Local register instruction for micro engine used in multithreadedparallel processor architecture |
ATE534074T1 (de) | 1999-09-01 | 2011-12-15 | Intel Corp | Kontextwechselbefehl für multithread-prozessor |
US7191309B1 (en) | 1999-09-01 | 2007-03-13 | Intel Corporation | Double shift instruction for micro engine used in multithreaded parallel processor architecture |
US6543049B1 (en) | 1999-09-03 | 2003-04-01 | International Business Machines Corporation | Ranked break points and method for debugging a computer program |
US6681341B1 (en) | 1999-11-03 | 2004-01-20 | Cisco Technology, Inc. | Processor isolation method for integrated multi-processor systems |
US6523108B1 (en) | 1999-11-23 | 2003-02-18 | Sony Corporation | Method of and apparatus for extracting a string of bits from a binary bit string and depositing a string of bits onto a binary bit string |
US6889319B1 (en) | 1999-12-09 | 2005-05-03 | Intel Corporation | Method and apparatus for entering and exiting multiple threads within a multithreaded processor |
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 |
US7051329B1 (en) | 1999-12-28 | 2006-05-23 | Intel Corporation | Method and apparatus for managing resources in a multithreaded processor |
US6324624B1 (en) | 1999-12-28 | 2001-11-27 | Intel Corporation | Read lock miss control and queue management |
US6463072B1 (en) | 1999-12-28 | 2002-10-08 | Intel Corporation | Method and apparatus for sharing access to a bus |
US6625654B1 (en) | 1999-12-28 | 2003-09-23 | Intel Corporation | Thread signaling in multi-threaded network processor |
US6307789B1 (en) | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6631430B1 (en) | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6560667B1 (en) | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US6584522B1 (en) | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
US6976095B1 (en) | 1999-12-30 | 2005-12-13 | Intel Corporation | Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch |
US6631462B1 (en) | 2000-01-05 | 2003-10-07 | Intel Corporation | Memory shared between processing threads |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US6629237B2 (en) | 2000-09-01 | 2003-09-30 | Intel Corporation | Solving parallel problems employing hardware multi-threading in a parallel processing environment |
US20020053017A1 (en) | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a multithreaded processor |
US6560671B1 (en) | 2000-09-11 | 2003-05-06 | Intel Corporation | Method and apparatus for accelerating exchange or swap instructions using a register alias table (RAT) and content addressable memory (CAM) with logical register numbers as input addresses |
US6784889B1 (en) | 2000-12-13 | 2004-08-31 | Micron Technology, Inc. | Memory system and method for improved utilization of read and write bandwidth of a graphics processing system |
US7020871B2 (en) | 2000-12-21 | 2006-03-28 | Intel Corporation | Breakpoint method for parallel hardware threads in multithreaded processor |
US6862676B1 (en) | 2001-01-16 | 2005-03-01 | Sun Microsystems, Inc. | Superscalar processor having content addressable memory structures for determining dependencies |
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 |
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 |
US7181594B2 (en) | 2002-01-25 | 2007-02-20 | Intel Corporation | Context pipelines |
US7437724B2 (en) | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
US6971103B2 (en) | 2002-10-15 | 2005-11-29 | Sandbridge Technologies, Inc. | Inter-thread communications using shared interrupt register |
-
2000
- 2000-08-31 WO PCT/US2000/023992 patent/WO2001018646A1/en active Application Filing
- 2000-08-31 WO PCT/US2000/024006 patent/WO2001016713A1/en active Application Filing
- 2000-08-31 AU AU73407/00A patent/AU7340700A/en not_active Abandoned
- 2000-08-31 EP EP00959717A patent/EP1236092A4/en not_active Ceased
- 2000-08-31 WO PCT/US2000/023994 patent/WO2001016722A1/en active Application Filing
- 2000-08-31 EP EP00961457A patent/EP1236094B1/en not_active Expired - Lifetime
- 2000-08-31 AU AU70979/00A patent/AU7097900A/en not_active Abandoned
- 2000-08-31 EP EP00959714A patent/EP1236093A4/en not_active Ceased
- 2000-08-31 EP EP00959712A patent/EP1236097A4/en not_active Withdrawn
- 2000-08-31 AT AT00961457T patent/ATE475930T1/de not_active IP Right Cessation
- 2000-08-31 CN CNB008154309A patent/CN1254739C/zh not_active Expired - Fee Related
- 2000-08-31 CN CNB008144966A patent/CN100474236C/zh not_active Expired - Fee Related
- 2000-08-31 AU AU70985/00A patent/AU7098500A/en not_active Abandoned
- 2000-08-31 CA CA002383532A patent/CA2383532A1/en not_active Abandoned
- 2000-08-31 AT AT00959711T patent/ATE396449T1/de not_active IP Right Cessation
- 2000-08-31 WO PCT/US2000/024000 patent/WO2001016714A1/en active Application Filing
- 2000-08-31 CA CA002386562A patent/CA2386562A1/en not_active Abandoned
- 2000-08-31 CN CNB008154376A patent/CN1184562C/zh not_active Expired - Fee Related
- 2000-08-31 AU AU70986/00A patent/AU7098600A/en not_active Abandoned
- 2000-08-31 CN CNB008151237A patent/CN1296818C/zh not_active Expired - Fee Related
- 2000-08-31 AU AU70984/00A patent/AU7098400A/en not_active Abandoned
- 2000-08-31 CN CNB008148740A patent/CN1271513C/zh not_active Expired - Fee Related
- 2000-08-31 CN CNB008154171A patent/CN100342326C/zh not_active Expired - Fee Related
- 2000-08-31 WO PCT/US2000/023983 patent/WO2001016715A1/en active Application Filing
- 2000-08-31 CA CA002386558A patent/CA2386558C/en not_active Expired - Fee Related
- 2000-08-31 CA CA002383528A patent/CA2383528C/en not_active Expired - Fee Related
- 2000-08-31 CA CA002383531A patent/CA2383531A1/en not_active Abandoned
- 2000-08-31 EP EP00959713A patent/EP1242869B1/en not_active Expired - Lifetime
- 2000-08-31 AU AU73406/00A patent/AU7340600A/en not_active Abandoned
- 2000-08-31 AU AU73404/00A patent/AU7340400A/en not_active Abandoned
- 2000-08-31 AU AU70990/00A patent/AU7099000A/en not_active Abandoned
- 2000-08-31 DE DE60044752T patent/DE60044752D1/de not_active Expired - Lifetime
- 2000-08-31 WO PCT/US2000/023982 patent/WO2001016758A2/en active Application Filing
- 2000-08-31 CA CA002383526A patent/CA2383526A1/en not_active Abandoned
- 2000-08-31 WO PCT/US2000/023996 patent/WO2001016716A1/en active Application Filing
- 2000-08-31 EP EP00959711A patent/EP1236088B9/en not_active Expired - Lifetime
- 2000-08-31 US US10/069,195 patent/US7421572B1/en not_active Expired - Fee Related
- 2000-08-31 DE DE60038976T patent/DE60038976D1/de not_active Expired - Lifetime
- 2000-08-31 AU AU70987/00A patent/AU7098700A/en not_active Abandoned
- 2000-09-01 CA CA002383540A patent/CA2383540A1/en not_active Abandoned
- 2000-09-01 CN CNB008154120A patent/CN100351781C/zh not_active Expired - Fee Related
- 2000-09-01 TW TW089117903A patent/TW559729B/zh not_active IP Right Cessation
- 2000-09-01 AU AU73429/00A patent/AU7342900A/en not_active Abandoned
- 2000-09-01 EP EP00961484A patent/EP1242867A4/en not_active Withdrawn
- 2000-09-01 WO PCT/US2000/024095 patent/WO2001016698A2/en active Application Filing
- 2000-09-01 AU AU71012/00A patent/AU7101200A/en not_active Abandoned
- 2000-10-18 TW TW089117901A patent/TWI220732B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117904A patent/TW475148B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117910A patent/TW486667B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117907A patent/TW594562B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117911A patent/TW548584B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117905A patent/TW569133B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117900A patent/TW486666B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117912A patent/TW546585B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117902A patent/TW571239B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117906A patent/TWI221251B/zh not_active IP Right Cessation
-
2002
- 2002-10-21 HK HK02107606.9A patent/HK1046049A1/zh unknown
- 2002-11-07 HK HK02108083.9A patent/HK1046566A1/zh unknown
- 2002-11-07 HK HK02108082.0A patent/HK1046565A1/zh unknown
-
2003
- 2003-03-24 HK HK03102109.1A patent/HK1049902B/zh not_active IP Right Cessation
- 2003-05-15 HK HK03103439A patent/HK1051247A1/xx not_active IP Right Cessation
- 2003-06-03 HK HK03103925A patent/HK1051730A1/xx not_active IP Right Cessation
- 2003-06-03 HK HK03103924A patent/HK1051729A1/xx not_active IP Right Cessation
- 2003-06-03 HK HK03103923A patent/HK1051728A1/xx not_active IP Right Cessation
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1271513C (zh) | 转移指令的方法和处理器 | |
CN1192314C (zh) | 并行处理器结构的sram控制器 | |
CN1185592C (zh) | 并行处理器结构 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1282925C (zh) | 利用页标志寄存器跟踪存储器装置内物理页的状态的方法 | |
CN1205553C (zh) | 分优先级访问外部装置的设备 | |
CN1199109C (zh) | 通过重排序存储器请求提高总线利用率的存储器控制器 | |
CN1286771A (zh) | 错误推测之后的指令再执行的管道外部跟踪缓冲器 | |
CN1253806C (zh) | 仲裁电路和数据处理系统 | |
CN1846194A (zh) | 一种在处理器中执行的计算线程的暂停与解除分配的整合机制 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1619511A (zh) | 执行快速推测式加载运算的微处理器及装置 | |
CN1319210A (zh) | 可配置的硬件块的配置方法 | |
CN1916962A (zh) | 存储和回存状态上下文在图形处理单元的方法和装置 | |
CN101034381A (zh) | 多主机系统和数据传送系统 | |
CN1286769A (zh) | 具有多程序计数器和在执行流水线外面的追踪缓冲区的处理器 | |
CN1912926A (zh) | 可中断图形处理单元处理多个程序的方法和图形处理单元 | |
CN1916961A (zh) | 可中断图形处理单元及其控制方法 | |
CN1934543A (zh) | 高速缓冲存储器及其控制方法 | |
CN1291325C (zh) | 通过源/目的转换机构实现高速存储器克隆的方法和系统 | |
CN1278226C (zh) | 模拟装置、模拟方法 | |
CN1397886A (zh) | 假想分支目标地址高速缓存 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
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: 20060823 Termination date: 20160831 |