CN1296818C - 用于多线程并行处理器的指令 - Google Patents
用于多线程并行处理器的指令 Download PDFInfo
- Publication number
- CN1296818C CN1296818C CNB008151237A CN00815123A CN1296818C CN 1296818 C CN1296818 C CN 1296818C CN B008151237 A CNB008151237 A CN B008151237A CN 00815123 A CN00815123 A CN 00815123A CN 1296818 C CN1296818 C CN 1296818C
- Authority
- CN
- China
- Prior art keywords
- context
- thread
- memory
- micro engine
- sram
- 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
- 230000015654 memory Effects 0.000 claims abstract description 163
- 238000000034 method Methods 0.000 claims description 60
- 238000003860 storage Methods 0.000 claims description 36
- 230000005540 biological transmission Effects 0.000 claims description 31
- 230000001360 synchronised effect Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 4
- 230000002747 voluntary effect Effects 0.000 claims description 2
- 230000006870 function Effects 0.000 abstract description 19
- 238000012546 transfer Methods 0.000 description 56
- 230000015572 biosynthetic process Effects 0.000 description 25
- 238000005755 formation reaction Methods 0.000 description 25
- 238000005457 optimization Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 239000006260 foam Substances 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000002699 waste material Substances 0.000 description 3
- QNXAVFXEJCPCJO-UHFFFAOYSA-N Diclosulam Chemical compound N=1N2C(OCC)=NC(F)=CC2=NC=1S(=O)(=O)NC1=C(Cl)C=CC=C1Cl QNXAVFXEJCPCJO-UHFFFAOYSA-N 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000007599 discharging Methods 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- 102000029749 Microtubule Human genes 0.000 description 1
- 108091022875 Microtubule Proteins 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 230000001351 cycling effect Effects 0.000 description 1
- 238000001804 debridement Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000005059 dormancy Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 235000012054 meals Nutrition 0.000 description 1
- 210000004688 microtubule Anatomy 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000005381 potential energy Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 210000001519 tissue Anatomy 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/30018—Bit or string 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/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)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Multi Processors (AREA)
- Debugging And Monitoring (AREA)
- Image Processing (AREA)
- Stored Programmes (AREA)
- Control Of Transmission Device (AREA)
- Fittings On The Vehicle Exterior For Carrying Loads, And Devices For Holding Or Mounting Articles (AREA)
- Harvester Elements (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明揭示了一种基于硬件的并行多线程处理器。处理器包括协调***功能的通用处理器和支持多个硬件线程或上下文(CONTEXT)的多个微引擎。处理器还包括存储控制***,它具有根据存储器调用是否针对偶数存储区或奇数存储区排序存储器的第一存储控制器,还具有根据存储器调用是读调用还是写调用优化存储器调用的第二存储控制器。还揭示了根据执行上下文(上下文描述符:content descriptor)切换的转移的指令。
Description
技术领域
本发明涉及计算机处理器的操作方法。
背景技术
并行处理是在计算过程中并发事件信息处理的有效形式。与顺序处理相反,并行处理要求在一台计算机上同时执行多个程序。在并行处理器的范围,并行性意味着在同一时刻做一件以上的事情。不象所有任务在单个工作站上顺序完成的串行样式,或各任务在专门的工作站上完成的管线机器,对于并行处理提供多个工作站,每个工作站能完成所有任务。即,通常全部或者多个工作站同时且独立地在一个问题的同一个或共同的单元上工作。某些问题适合于应用并行处理来解决。
发明内容
根据本发明的第一方面,提供一种操作多线程并行处理器的方法,包括如下步骤:指导具有多个微引擎的处理器将在指定的微引擎中当前运行的上下文交换到存储器,使另外的上下文在该微引擎中执行,并导致选择不同的上下文及相关的程序计数器,所述微引擎中的每一个都维持硬件中的多个程序计数器以及与该程序计数器相关的状态。
根据本发明的第二方面,提供一种操作多线程并行处理器的方法,包括如下步骤:计算指定的参数以确定一个执行上下文过程的状态,和完成交换操作,以导致按照计算的指定参数的值选择不同的上下文和相关的程序计算计数器。
根据本发明的第三方面,提供一种能执行多个上下文的并行处理器,包括:寄存器堆栈;程序记数器,用于每个执行的上下文;算术逻辑单元,连接到寄存器堆栈和程序控制存储器,该程序控制器存储存储上下文交换指令,该指令使处理器计算指定的参数以确定执行的上下文过程的状态,并完成交换操作,导致按照所计算的指定参数的值选择不同的上下文及相关的程序计数器,并且保存原来的程序计数器值。
附图说明
图1表示使用基于硬件的多线程(multithreaded)处理器的一个通讯***的方框图。
图2表示图1中基于硬件的多线程处理器的详细方框图。
图3表示使用在图1及图2中基于硬件的多线程处理器的微引擎(microengine)功能单元的方框图。
图4表示在图3中微引擎的管线的方框图。
图5A和图5B表示与指令有关的上下文(Content)的示例性格式图。
图6表示通用寄存器地址安排的方框图。
图7表示用于在基于硬件的多线程处理器中使用的增强带宽操作的存储控制器的方框图。
图7A表示在图7的SDRAM控制器中的判优策略的流程图。
图7B表示优化SDRAM控制器的优点的时序图。
图8表示在基于硬件的多线程处理器中使用的等待时间限止的操作的存储控制器的方框图。
图8A表示优化SRAM控制器的优点的时序图。
图9表示图1中处理器的通讯总线接口方框图。
具体实施方式
参考图1,通讯***10数据包括并行的基于硬件的多线程处理器12。基于硬件的多线程处理器连接到如PCI的总线14,存储器***16和第二总线18。***10对于能分解成各并行子任务或功能的任务特别有用。具体说来,基于硬件的多线程处理器12对于面向带宽而非面向等待时间的任务是有用的。基于硬件的多线程处理器12具有多个微引擎22,每个具有能同时独立地在一个任务上工作的多个硬件控制的线程。
基于硬件的多线程处理器12还包括一个中央控制器20,它帮助加载对基于硬件的多线程处理器12的微码控制,并完成其他通用计算机类型的功能,如处理协议,例外处理,对数据包处理的额外支持,其中微引擎将数据包送出,进行如边界条件那样的更详细的处理。在实施例中,处理器20是基于StrongArm(Arm是英国ARM有限公司的商标)的结构。通用微处理器20具有操作***。通过操作***,处理器20能调用功能在微引擎22a~22f上操作。处理器20能使用任何支持的操作***,最好是实时操作***。对于作为实现StrongArm的核心处理器,能够使用的操作***如Microsoft NT。Real time,VXWorks和□CUS,一个在因特网上可用的自由件(Freeware)操作***。
基于硬件的多线程处理器12还包括多个功能微引擎22a~22f。功能微引擎(微引擎)22a~22f中每个保持多个硬件的程序计数器和与这些程序记数器有关的状态。实际上,虽然在任何时刻只有一个微引擎在操作,对应的多个线程组能在每个微引擎22a~22f上同时活动。
在实施例中,有6个微引擎22a~22f,如图所示,每个微引擎22a~22f具有处理4个硬件线程的能力。6个微引擎22a~22f带着包括存储器***16和总线接口24和28的共享资源操作。存储器***16包括同步动态随机存储器(SDRAM)控制器26a和静态随机存储器(SRAM)控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大量的数据,如处理从网络数据包来的网络有效载荷(Payload)的处理。SRAM控制器26b和SRAM存储器16b用于对低等待时间,快速访问任务的网络实现,如访问查找表,用于核心处理器20的存储器等。
6个微引擎22a~22f根据数据的特性访问SDRAM16a或SRAM16b。因此,低等待时间低带宽的数据存入SRAM并从中取出,而等待时间不重要的较高带宽的数据存入SDRAM并从中取出。微引擎22a~22f能执行到SDRAM控制器26a或SRAM控制器26b的存储器调用。
硬件多线程的优点能能过SRAM或SDRAM存储器的访问解释。作为一个例子,从一个微引擎通过Thread-0请求的SRAM访问引起SRAM控制器26b起动对SRAM存储器16b的访问。SRAM控制器对SRAM总线判优,访问SRAM16b,从SRAM16b取数据,并将数据返回到请求的微引擎22a~22f。在SRAM访问期间,如果如22a那样的微引擎只有单个线程能操作,那个微引擎在数据从SRAM返回前休眠。通过使用每个微引擎22a~22f中的硬件内容(Context)交换,硬件内容交换使得带单独程序计数器的其他上下文在那同一个微引擎中执行。因此,在第一线程,如Thread_0,在等待读数据返回的同时,另外的线程,如Thread_1,能运行。在执行期间,Thread_1可能访问SDRAM存储器16a。在Thread_1在SDRAM单元上操作,且Thread_0在SRADM上操作的同时,一个新的线程,如Thrad_2现能在微引擎22a中操作。Thrad_2能操作一定时间,直至它需要访问存储器或完成某些长等待时间的操作,如作出对总线接口的访问。因此,处理器12能同时具有总线操作,SRAM操作和SDRAM操作,所有均由一个微引擎操作或完成,并还有一个线程可用于在数据通道中处理更多的工作。
硬件内容交换还与任务的完成同步。例如,两个线程能到达同一个共享资源,如SRAM。如FBUS接口28,SRAM控制器26a,和SDRAM控制器26b这些分别的功能单元的每一个,当它们完成一个从一个微引擎线程上下文不断的请求的任务时,回报一个标志,通知一个操作的完成。当微引擎接收到该标志时,该微引擎决定打开哪个线程。
基于硬件的多线程处理器12的应用一个例子是用作一个网络处理器。作为一个网络处理器,基于硬件的多线程处理器12接口到网络设备,如媒体访问控制设备,例如10/100BaseT Octal MAC13a或Gigabit Ethernet设备13b。通常,作为一个网络处理器。基于硬件的多线程处理器12能接口到接收/发送大量数据的任何类型的通讯设备或接口。在网络应用中运行的通讯***10能从设备13a,13b接收多个网络数据包并以并行方式处理那些数据包。采用基于硬件的多线程处理器12,能互相独立的处理每个网络数据包。
使用处理器12的另一个例子是用于页面图象(Postscript)处理器的打印机引擎,或作为用于如RAID盘存储器那样的存储子***。另一个应用是作为匹配引擎来匹配买方和卖方之间的订单。在***10上能完成这些和其他并行类型的任务。
处理器12包括将处理器连接到第二总线18的一个总线接口28。在实施例中,总线接口28将处理器12连接到所谓的FBUS18 CFIFO总线)。FBUS接口28负责控制并将处理器接口到FBUS18。FBUS18是64位宽的FIFO总线,用于接口到媒体访问控制器(MAC)设备。
处理器12包括如PCI总线接口24的第二接口,它将插在PCI总线上的***部件连接到处理器12。PCI总线提供到如SDRAM存储器16a那样的存储器16的高速数据通道24a。通过该通道,数据能借助直接存储器访问(DMA)从SDRAM16a穿过PCI总线14快速地移动。基于硬件的多线程处理器12支持图象传输。基于硬件的多线程处理器12能使用多个DMA通道,所以如果DMA传输的一个目标忙,另一个DMA通道能担当PCI总线将信息提交到另一个目标,以保持高的处理器的效率。此外,PCI总线接口24支持目标和基本的操作。目标操作是那样的操作,其中在总线14上的从属设备通过从属于目标操作的读和写访问SDRAM。在基本操作中,处理器20直接将数据发送到PCI接口或直接从中接收数据。
每个功能单元连结到一个或多个内部总线。如下面所述,内部总线是双32位总线(即一根总线用于读,一根总线用于写)。基于硬件的多线程处理器12还构造成使得在处理器12中内部总线的带宽之和超过连结到处理器12的外部总线的带宽。处理器12包括内部核心处理器总线32,如ASB总线(先进***总线),它将处理器核心20连接到存储控制器26a,26c并连接到下述的ASB翻译点30。ASB总线是与Strong Arm处理核心一起使用的所谓的AMBA总线的子集。处理器12还包括专用总线34,它将微引擎单元连续到SRAM控制器26b,ASB翻译器30和FBUS接口28。存储器总线38将存储控制器26a,26b连接到总线接口24和28,以及包括用于自引导操作的闪存随机存储器的存储器***16等。
参考图2,每个微引擎22a~22f包括一个判优器,它检查标志以确定要操作的可用线程。从任何微引擎22a~22f来的任何线程能访问SDRAM控制器26a,SDRAM控制器26b或FBUS接口28。存储控制器26a和26b的每一个包括多个队列,存储未完成的存储器调用请求。此队列保持存储器调用的次序或者安排存储器调用以优化存储器带宽。例如,如果thread_0(thread_线程)与Thread_1没有任何依赖关系,thread_0和thread_1没有理由不能不按次序地完成它们的存储器调用。微引擎22a~22f发出存储器调用请求到存储控制器26a和26b。微引擎22a~22f用足够的存储器调用操作充满存储器子***26a和26b,使得存储器子***26a和26b成为处理器12操作的瓶颈。
如果存储器子***用本质上独立的存储器请求充满,处理器12能实现存储器调用排序。存储调用排序能改善可得到的存储器带宽。如下所述,存储器调用排序减少了在访问SRAM中发生的停顿时间或泡沫。对于对SRAM的存储器调用,将在信号线上的电流方向在读和写之间切换产生一个泡沫或停顿时间,等待在将SRAM 16b连接到SRAM控制器26b的导线上的电流稳定。
即,驱动在总线上电流的驱动器需要在改变状态的前稳定下来。因此,一个读接着一个写的重复周期能破坏峰值带宽。存储器调用排序允许处理器12组织对存储器的调用,使得一长串的读后面接着一长串的写。这样能用于使管线中的停顿时间最少,有效地达到接近于最大可用带宽。调用排序帮助维持并行的硬件内容线程。在SDRAM,调用排序使隐去了从一个存储区到另一个存储区的预加载。具体说来,如果存储器***16b被组织成一个奇数存储区和一个偶数存储区,在处理器在奇数存储区运行的同时,存储控制器能开始预加载偶数存储区。如果存储器调用在奇数和偶数存储区之间交替,预加载是可能的。通过排列存储器调用的次序交替访问相反的存储区,处理器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提供使用一系列输入和输出FIFO29a~29b输入大量数据的能力。从FIFO 29a~29b微引擎22a~22f取出数据,或命令SDRAM控制器26b将从总线18上的设备来到接收FIFO的数据传到FBUS接口28。该数据能通过存储控制器26a,借助直接存储器访问,送到SDRAM存储器16a。类似地,微引擎能将数据从SDRAM26a移到接口28,经过FBUS接口28移出FBUS18。
在微引擎之中数据功能是分布式的。到SRAM26a,SDRAM 26b和FBUS28的连接是通过命令请求。例如,一个命令请求能将数据从位于微引擎22a中的寄存器移动共享资源,如SDRAM位置,SRAM位置,闪存存储器或某些MAC地址。命令被发出到每个功能单元的共享资源。然而,共享资源不需要保持数据的局部缓冲。相反,共享资源访问位于微引擎内部的分布式数据。这使微引擎22a~22f局部访问数据,而不是判优访问总线去冒险竞争总线。以此特征,对于微引擎22a~22f内部数据的等待是0个周期停顿。
连结如存储控制器26a和26b那样的共享资源的数据总线,如ASB总线30,SRAM总线34和SDRAM总线38,有足够的带宽,使得没有瓶颈。因此,为了避免瓶颈,处理器12具有带宽要求,为每个功能单元至少提供两倍内部总线的最大带宽。作为例子,SDRAM能在83MHz运行64们宽的总线。SRAM数据总线能具有分别的读写总线,如能有在166MHz下运行的32位宽的读总线和166MHz下32位宽的写总线。实际上是在166MHz运行64位,是SDRAM带宽的两倍。
核心处理器20也能访问共享资源。核心处理器通过总线32具有到SDRAM控制器26a,到总线接口24和到SRAM控制器26b的直接通讯。然而,为了访问微引擎22a~22f和位于任何微引擎22a~22f的传输寄器,核心处理器20通过在总线上的ASB翻译器访问微引擎22a~22f。ASB翻译器30在物理上能驻留在FBUS接口28,但在逻辑上是单纯的。ASB翻译器30完成在FBUS微引擎舆寄存器位置和核心处理器地址(即ASB总线)之间的地址翻译,使得核心处理器20能访问属于微引擎22a~22c有的寄存器。
虽然微引擎能如下所述那样使用寄存器组交换数据,还提供便笺式存储器27,以允许微引擎将数据写出到该存储器为其他微引擎读取。便笺式存储器27连接到总线34。
处理器核心20包括一个RISC核心50,它实现在5个阶段管理中在一周期中完成一个或两个操作数的单个循环移位,处理器核心还提供乘法支持和32位滚动移位支持。此RISC核心50是标准的Strong Arm结构,但为了性能的原因以5阶段管线实现。处理器核心20还包括16千字节指定高速缓存52和8千字节数据高速缓存54和预取流缓存56。核心处理器20与存储器写及取指令并行地完成算术运算。核心处理器20通过ARM确定的ASB总线与其他功能单无接口。ASB总线是32位双向总线32。
微引擎
参考图3,示出微引擎22a~2f中的示例性的一个,如微引擎22f。微引擎包括一个控制存储70,在实施例中它包括1024个32位字的RAM。该RAM存储微程序。微程序可通过核心处理器20加载。微引擎22f还包括控制器逻辑72。控制器逻辑包括一个指令解码器73和程序计数器(PC)单元72a~72d。以硬件形式保持4个微程序计数器72a~72d。微引擎22f还包括上下文事件切换逻辑74。上下文事件逻辑74接收从每个共享资源,如SRAM 26a,SDRAM 26b,或处理器核心20,控制和状态寄存器等,接收消息(如SEQ_#EVENT_RESPONSE;FBI_EVENT_RESPONSE;SRAM_EVENT_RESPONSE;SDRAM_EVENT_PESPONSE;和ASB-EVENT-RESPONSE)。这些消息提供有关请求的功能是否已完成的信息,根据由一个线程请求的功能是否完成以及是否已发完成信号,该线程需要等待完成信号,而且如果该线程能够操作,则该线程被放置在可用线程表(未示出)。微引擎22f能具有最大的可用的线程,如4个。
除了对执行线程是局部的事件信号以外,微引擎22使用全局的信号状态。带着信号状态,执行的线程能对所有微引擎22广播信号状态。接收请求有效(Receive Request Available)信号,在微引擎中任何所有的线程能接这些信号状态转移。能使用这些信号状态确定资源的可用性或是否资源准备服务。
上下文事件逻辑74具有对4个线程的判优。在实施例中,判优是一个循环机构。也能使用其他技术,包括优先级队列或加权的公平队列。微引擎22f还包括一个执行框(EBOX)数据通道76,它包括算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a完成算术和逻辑功能以及移位功能。寄存器组76b具有相当大量的通用寄存器。如图6所描述,在此实施中,在第一存储区BankA有64个通用寄存器,在第2存储区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是奇偶校验保护的,才能发出奇偶校验标志。微引擎和PCI单元是仅有被告知奇偶校验错误的请求者。因此,如果处理器核心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置位条件码)
cb是条件转移
bx是转移后的微码
XX是放弃的微码
如表1所示,直到周期4n1的条件码被置位,且作出转移决定(在此情况导致在周期与查找转移路径)。微引擎招致2个周期的转移等待时间的损失,因为在转移路径开始用操作b1弃满管线以前它必须在管线中放弃操作n2和n3(紧接着转移后的2个微字)。如果转移未发生,没有微字放弃,且执行正常延续。微引擎具有若干机构来减少或消除有效的转移等待时间。
微引擎支持延迟(deferred)转移。延迟转移进在传移发生以后在转移生效以前,微引擎允许1或2个微字(即转移生效是在时间上延迟)。因此,如果能找到有用的工作来填补在转移微字以后的浪费的周期,则转移的等待时间能被隐去。下面示出1个周期的延迟转移,其中n2被允许在cb之后但在b1之前执行,
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-------------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|
寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|
ALU/shifter/cc | | | |n1|cb|n2|XX|b1|
写回 | | | | |n1|cb|n2|XX|
下面示出2周期延迟的转移,其中n2和n3均允许在转移到b1发生前完成,注意,2周期转移延迟仅当条件码在转移以前的微字上设置时才允许。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
--------------+----+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|n3|b1|b2|b3|b4|b5|
寄存器地址生成 | |n1|cb|n2|n3|b1|b2|b3|b4|
寄存器文件查找 | | |n1|cb|n2|n3|b1|b2|b3|
ALU/shifter/cc | | | |n1|cb|n2|n3|b1|b2|
写回 | | | | |n1|cb|n2|n3|b1|
微引擎也支持条件码计算,如果在转移以前,作出转移决定的条件码被设置成2个或更多的微字,则能消除1个周期的等待时间,因为转移决定能在1个周期以前作出,
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
-----------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|n2|cb|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|n2|cb|XX|b1|b2|b3|
寄存器文件查找 | | |n1|n2|cb|XX|b1|b2|
ALU/shifter/cc | | | |n1|n2|cb|XX|b1|
写回 | | | | |n1|n2|cb|XX|
在此例中,n1设置条件码且n2不设置条件码,因此,在周期4(而非周期5)能作出转移决定,以消除1个周期的转移等待时间。在下例中,1个周期转移延迟和较早设置条件码结合起来完全隐去转移等待时间。
在1周期延迟转移前的2个周期设置条件码(cc’s),
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
------------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|n2|cb|n3|b1|b2|b3|b4|
寄存器地址生成 | |n1|n2|cb|n3|b1|b2|b3|
寄存器文件查找 | | |n1|n2|cb|n3|b1|b2|
ALU/shifter/cc | | | |n1|n2|cb|n3|b1|
写回 | | | | |n1|n2|cb|n3|
在条件码不能提前置位(即在转移前在微字中置位)的情况,微引擎支持转移推测,试图减少1个周期的转移等待时间。借助“推测”转移路径或顺序路径,微引擎在确切知道执行什么路径前一个周期预取推测的路径。如果推测正确,如下所述消取了1个周期的转移等待时间。
推测发生转移/转移发生
| 1 | 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设置条件码)
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所示,上下文转移指令从转移掩码字段何时等于“8”或“9”而确定。上下文转移指令能具有下述格式,
br=ctx[ctx,label#],option_token(选项_标记)
br!=ctx[ctx,label#],option_token(选项_标记)
字段label#是对应于指令地址的符号标号。字段ctx是上下文数。在实施例中,有效的ctx值是0,1,2,3。上下文转移指令可以具有选项标记。选项标记“defer one”(延迟1)导致微引擎在完成转移指令前执行跟在此指令后的一条指令。
如果该上下文是指定数,指令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)可能过分的复杂化。结构也能设计成使得在以前的转移,跳转或上下文判优微字的转移延迟窗中的转移成为非法,以避免复杂的和可能未预见的转移行为。
上下文交换指令CT_ARB将当前在指定微引擎中运行的上下文交换出去到存储器中,让其他上下文在那个微引擎中执行。当指定的信号激活时,上下文交换指令CT_ARB还唤醒被交换出的上下文。上下文交换指令的格式是
ctx_arb[parameter],option_token
“parameter”字段能具有若干值中的一个。如果该参数据定为“sramswap”,该上下文交换指令将交换出当前的上下文并当收到线程的SRAM信号时唤醒它。如果该参数指定为“sram swap”,该上下文交换指令将交换出当前的上下文并当收到线程的SDRAM信号时唤醒它。该参数也能指定为”FBI“。并交换出当前的上下文,并当收到线程的FBI信号时唤醒它。FBI信号指出FBICSR,Scratchpad(便笺存储器),TFIFO或RFIFO操作已完成。
该参数能指定成“seq_num1_chamge/seq_num2_chamge”,它交换出当前的上下文并当顺序数的值改变时唤醒它。该参数能指定为“inter_thread”,它交换出当前的上下文,并当收到线程的内线程(interthread)信号时唤醒它,或指定为“Voluntary”,如果另外的线程准备运行,交换出当前的上下文,否则不作交换。如果该线程被交换出,在某个后续的上下文判化点它被自动地重新使能运行。该参数能是“auto_push”,它交换出当前的上下文并当SRAM传输读寄存器数据自动地被FBUS接口压入时唤醒它,该参数或者是“start)receive”,它交换出当前的上下文并当在接收FIFO中的新的数据包数据可用于为此线程处理时唤醒它。
该参数也能是“kill”,它防止在对该线程的适当使能位在CTX_ENABLES寄存器中置位以前再次执行当前的上下文或线程,也能是“PCI”,它交换出当前的上下文且在PCI单元发生DMA传输已经完成的信号时唤醒它。
上下文交换指令CTX_ARB能具有下列option_token(选项_标记),deferone(延迟1),它规定在上下文被交换以前,在此调用后执行1条指令。
每个微引擎22a~22f支持4个上下文的多线程执行。其一个理由是在一个线程刚发出存储器调用并在做其他工作以前必须等待该调用完成的情况允许另一个线程开始执行。为了维持微引擎的有效的硬件执行,此行为是重要的,因为存储器等待时间是显著的。换言之,如果只支持单线程,微引擎将空等许多周期,等待调用返回,因而减少了整个计算产生率。多线程执行通过在若干线程间完成有用的独立工作允许一个微引擎隐去存储器等待时间。提供两个同步机构,以便允许一个线程发出SRAM或SDRAM调用,并随后同步到调用完成的时间点。
一个机构是即时同步(Immediate Synchronization)。在即时同步时,微引擎发出调用并立即交换出上下文。当对应的调用完成,该上下文收到信号。一旦收到信号,当发生上下文交换(context_swap)事件并轮到它适行时,该上下文将交换回来执行。因此,从单个上下文指令流动观点,在发出存储器调用以后的微字直到调用完成以前不执行。
第二机构是延迟同步(Delayed synchronization)。在延迟同步中,微引擎发出该调用,并随后继续执行某些其他与该调回无关的有用工作。若干时间以后,有必要在另外的工作完成以前,将线程的执行流同步到发生调用的完成。在这点上执行上下文交换指令,它或者交换出当前的线程,并在调用完成时的以后某时刻将其交换回来,或者因为调用已经完成,继续执行当前线程。使用两个不同的发信号方案实现延迟同步。
如果存储器调用与传输寄存器有关,当对应的传输寄存器的有效位置或清除时产生触发该线程的信号。例如,将数据放入传输寄存器A的SRAM读在对A的有效位被置位时将收到信号。如果存储器调用与传输FIFO或接收FIFO有关而不是一个传输寄存器,则当在SDRAM控制器26a中完成调用时产生信号。每个上下文只有一个信号状态被保持在微引擎调度器中,因此在此方案中只有一个未完成的信号存在。
至少有两个普通的操作算法,由此能设计微控制器的微程序。一个是以单个线程的执行等待时间为代价优化整个微控制器的计算产生率和整个存储器带宽。当***具有多个微引擎执行多个线程,每个微引擎操作互不联系的数据数据包时,此算法有意义。
第二个是以整个微引擎的计算产出量的整个存储器带宽为代价优化微引擎执行等待时间。此算法能涉及执行具有实时限制的线程,那是这样的限制,它规定某个工作绝对必须在某指定时刻做完。那样的限制需要将单线程执行的优化赋予高于如存储器带宽或整个计算产生量等其他考虑的优先权。实时线程隐含着只执行一个线程的单个微引擎。将不处理多线程,因为目的是允许单个实时线程改可能快地执行-多线程的执行将阻碍此能力。
在发出存储器调用命令和上下文切换方面这两种算法的编码内格大不相同。在实时情况,目的是尽可能快地发出尽可能多的存储器调用,以便使由这些调用招致的存储器等待时间最小。尽可能早地发出尽可能多的调用以后,目的是尽可能使诸微引擎以与这些调用并行的方工完成尽可能多的计算。对应于实时优化的计算流程是,
1)发出存储器调用1
2)发出存储器调用2
3)发出存储器调用3
4)完成与存储器调用1,2,和3无关的工作
5)同步到存储器调用1的完成
6)完成与存储器调用1有关但与存储器调用2和3无关的工作
7)根据以前的工作发出任何新的存储器调用
8)同步到存储器调用2的完成
9)完成与存储器调用1和2有关但与存储器调用3无关的工作
10)根据以前的工作发出任何新的存储器调用
11)同步到存储器调用3的完成
12)完成与所有3个调用的完成有关的工作
13)根据以前的工作发出新的存储器调用。
相反,对产生量和带宽的优化采取不用的方法。对于微引擎计算产出量及整个存储器带宽的优化,在单个线程执行等待时间方面给于较少考虑。为此,目的是在对每个线程的整个微程序中等间隔地存储器调用,这将提供对SRAMtSDRAM控制器的均匀的存储器调用流,并使1个线程永远可用的概率最大,以便隐去在另外线程被交换出时的存储器等待时间。
寄存器文件地址类型
参考图6,存去的两个寄存器地址空间是局部可访问的寄存器和可由所有微引擎访问的全局可访问寄存器。通用寄存器(GPR)作为两个分别的存储区(A存储工和B存储区)实现,它们的地址是逐字交替,使A存储区寄存器具有lsb=0,而B存储区寄存器有lsb=1(lsb是最低位)。每个存储区在其存储区由能完成对两个不同字的同时读和写。
在整个存储区A和B,寄存器76b也组织成各32个寄存器的4个窗76b0-76b3,它们对每个线程可相对编址。因此,thread_0在77a(寄存器0)处找到其寄存器0,thread_1在77b(寄存器32)处找到其寄存器0,therad_2在77c(寄存器64)处找到其寄存器0,thread_3在77d(寄存器96)处找到其寄存器0。支持相对编址,所以多个线程能使用完全相同的控制存储和位置而访问不同的寄存器窗并完成不同的功能。只要在微引擎22f中使用双口RAM,采用寄存器窗口编址和存储区编址提供必要的读写宽。
这些分窗的寄存器从上下文切换到上下文切换不必要保存数据,从而消除了上下文交换文件或堆栈的正常压入和弹出操作。对于从一个上下文改变到另一个上下文,这里的上下文切换具有0周期的有效负载。相对寄存器编址在整个通用寄存器组的地址宽度上将寄存器存储区分成窗。相对编址允许相对于窗的起点访问任何窗。在此结构中也支持绝对地址,其中通过提供确切的寄存器地址,任何一个绝对寄存器能被任何线程访问。
根据极据微字的格式通用寄存器78的编址能以2种方工发生。两种方式是绝对编址和相对编址。在绝对方式中,寄存器地址的编址直接以7位源字段(a6~a0或b6~b0)指定,
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
A GPR: |a6|0|a5|a4|a3|a2|a1|a0| a6=0
B GPR: |b6|1|b5|b4|b3|b2|b1|b0| b6=0
SRAM/ASB:|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=0 SDRAM:
|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=1
寄存器地址直接以8位目标字段(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|上下文|a3|a2|a1|a0| a4=0
B GPR: |b4|1|上下文|b3|b2|b1|b0| b4=0
SRAM/ASB:|ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=0
SDRAM: |ab4|0|ab3|上下文|b2|b1|ab0| ab4=1,ab3=1
或由6位目标字段(d5~d0)确定,
7 6 5 4 3 2 1 0
+…+…+…+…+…+…+…+…+
A GPR: |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=0
B GPR: |d5|d4|上下文|d3|d2|d1|d0| d5=0,d4=1
SRAM/ASB:|d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=0
SDRAM: |d5|d4|d3|上下文|d2|d1|d0| d5=1,d4=0,d3=1
如果<de:d4>=1,1,则目标地址不确定一个有效寄存器地址,因此没有目标操作数写回。
下列寄存器是从微引擎和存储控制器全局可访问的,
散列单元寄存器
便笺存储器和公用寄存器
接收FIFO及接收状态FIFO
发送FIFO
发送控制FIFO
微引擎不是中断驱动的。每个微流执行到完成,然后根据由在处理器12中其他的设备发信号的状态选择新的流。
参考图7,SDRAM存储器26a数据包括存储调用请求队列90,从各个微引擎22a~22f来的存储调用请求到达那里。存储控制器26a包括一个判优器91,它选择下一个微引擎调用请求到任何一个功能单元。如果一个微引擎是提供一个调用请求,该调用请求将通过地址和命令队列90,进入SDRAM控制器26a。如果调用请求是称为“optimized MEM bit-优化的存储器位”的位置位,进入的调用请求将被排序到偶数存储区队列90a或奇数存储区队列90b。如果存储器调用请求不具有存储器优化位置位,默认地进入到命令队列90c。SDRAM控制器26是FBUS接口28,核心处理器20和PCI接口24所共享的资源。SDRAM控制器26还维持一状态机用于完成READ-MODIFY-WRITE(读-修改-写)原子操作。SDRAM控制器26也完成字节对齐用于从SDRAM来的数据请求。
命令队列90c保持从各微引擎来的调用请求的次序。对于一系列奇数与偶数存储区调用,只有完成一系列到奇数及偶数存储区的存储区调用时才需要返回信号。如果微引擎22f将存储器调用排序到奇数存储器和偶数存储区调用,且存储区之一如偶数存储区,在奇数存储区前被排出存储器调用,但信号恰肯定最后是偶数存储区调用,虽然奇数存储区调用尚未提供服务,存储控制器26a可以想象地发信号给微引擎,通知存储器请求已完成。这种现象就引起一个相干(conherency)问题。为了避免此情况,提供命令队列90c,允许一个微引擎有多个未完成的存储器调用,只有其最后一个存储器调用需要发完成信号。
SDRAM控制器26a还饭知一个高优先级队列90d。在高优先级队列90d中从一个微引擎进入的存储器调用直接进入到高优先级队列,并以比其他队列中的存储器调用更高的优先级操作。偶数存储区队列90a,奇数存储区队列90b,命令队列90c,高优先级队列90d,所有这些队列在单个RAM结构中实现,它在逻辑上分成4个不同的窗,每个窗具有其自己的头指针及尾指针。因为充满及排出操作仅是单个输入和单个输出,它们能放在同一个RAM结构中以增加RAM结构的密度。
SDRAM控制器26a还包括核心总线接口逻辑,即ASB总线92。ASB总线接口逻辑92将核心处理器92接口到SDRAM控制器26a。ASB总线是包括32位数据通道和28位地址通道的总线。通过MEM ASB数据设备98,如一个缓冲器,数据存入到存储器或从存储器取出。MEM ASB数据设备98是用于写数据的队列。如果有数据经过ASB接口92从核心处理器20来,该数据能存入MEM ASB设备98,并随后从MEM 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,在那里被分解成行和列的地址选通,以访问SDRAM 16a,并经数据线16a写或读数据,将数据送到总线112。在一实施中,总线112实际上是两个分别的总线而不是单根总线,分别的总线包括一根连结到分布式微引擎22a~22f的读总线和一根连接到分布工微引擎22a~22f的写总线。
SDRAM控制器26a的一个特征是当一个存储器调用存入队列90,除了优化的MEM位能被置位,还有一个“chaining bit-链结位”。链结位在置位时允许对连续的存储器调用作专门处理。如前提到,判优器12控制选中哪个微引擎来通过命令总线(commander bus)将存储器调用请求提供到队列90(图7)。链接位的确定将控制判优器选择以前请求该总线的功能单元,因为链接位的置位指出该微引擎发出一个链接请求。
当链接位置位时,连续存储器调用被收在队列90中。那些连续存储器调用通常存入命令队列90c,因为连续存储器调用是从单个线程来的多个存储器调用。为了提供同步,存储控制器26a只需要在链接的存储器调用做完的终点发出信号。然而,在一个优化的存储器链接中(如当优化的EME位及链接位被置位),存储器调用能进入不同的存储区,并在另一个存储区完全排出以前可能在一个存储区上发出信号“done-完成”,因此破坏了相干性。因此,控制器110使用链接位维持从当前的队列的存储器调用。
参考图7A,示出在SDRAM控制器26a中判优策略的流程表示。判优策略有利于链接的微引擎存储器请求。过程115通过检查链接的微引擎存储器调用请求115a开始。过程115停留在链接请求处,直到链接位被清除。过程检查ASB总线请求115b,然后是PCI总线请求115c,高优先级队列服务115d,相反的存储区请求115e,命令队列请求115f,和同一存储区请求115g。链接请求是完全地操作,而115d~115d以循环方式操作。只有当操作115a~115d完全退出时过程处理115e~115g。当以前的SDRAM存储器请求已将链接位置位时,才是链接的微引擎存储器调用请求。当链接位置位时,判优引擎简单地再次操作同一队列,直到链接位被清除。由于当ASB在等待状态时在strong arm核心上有严重的性能损失,ASB比PCI有较高的优先级。由于PCI的等待时间要求,PCI比微引擎有更高的优先级。但是对其他总线,判优的优先级是不同的。
如图7B所示,示出没有活动的存储器优化和带有存储器优化通常的存储器时序。可以看到,使用活动的存储器优化使得总线的使用最大,因此隐去了在物理的SDRAM设备中内在的等待时间。在比例中,非优化的访问占用14个周期而优化的访问占用7个周期。
参考图8,示出对SDAM的存储控制器26b。存储控制器26b包括夺址和命令队列120。虽然存储控制器26a(图7)对根据奇数和偶数的存储区划分的存储器优化有一个队列,存储控制器26b根据存储器操作的类型,存储控制器26b根据存储器操作的类型,即读或写,进行优化。地址和命令队列120包括一个高优先级队列120a,一个读队列120b,它是SRAM实现的主要存储器调用功能,以及一个命令队列120c,通常包括所有到SRAM的写和未经优化的读。
虽然未示出,地址和命令队列120也能包括一个写队列。
SRAM控制器26b还包括核心总线接口逻辑,即ASB总线122。ASB总线接口逻辑122将核心处理器20接口到SRAM控制器26b。ASB总线是包括32位数据通道和28位地址通道的总线。数据经过MEM ASB数据设备,如缓冲器,存入存储器或从中取出。MEM ASB数据设备128是对写数据的队列。如果存在从核心处理器20经过ASB接口122的进入数据,读数据能存入MEM ASB设备128并随后从MEM ASB设备128经过SRAM接口140到SRAM存储器16b。虽然未示出,对读能有同样的队列结构。SRAM控制器26b还包括一个引擎127,将数据从微引擎及PCI总线弹出。
存储器请求经过比路复用器126送到SRAM接口140。多路复用器126由SRAM判优器131换制,后者检测每个队列的满度和请求的状态,并由此根据存储在优先级服务控制寄存器130的一个可编程值确定优先级。一旦对多路复用器126的控制选择了一个存储器调用请求,该存储器调用请求被送到解码器138,在那里解码并产生地址,SRAM单元保持对存储器映射芯片外SRAM(MenoryMapped off chip SRAM)和扩展ROM(Expansion ROM)的控制。SRAM控制器26b能够编址如16兆字节,如8兆字节映射到SRAM 16b,8兆字为特殊功能保留,包括由闪存随机存储器16c组成的自引导空间,对MAC设备13a,13b的控制台端口访问和对有关(RWON)计数器的访问。SRAM用于局部查找表和队列管理功能。
SRAM控制器26b支持下列事务,
微引擎请求(通过专用总线)到/从SRAM
核心处理器(通过ASB总线)到/从SRAM
SRAM控制器26b完成存储器调用排序以使在从SRAM接口140到存储器16b的管线中的延迟(泡沫)最小。SRAM控制器26b根据读功能进行存储器调用排序。泡沫可以是1或2个周期,取决于使用的存储器设备的类型。
SRAM控制器26b包括一个锁查找设备(Lock Lookup device)142,它是用于查找读锁(read lock)的8个条目地址上下文的可编址存储器。每个位置包括一有效位,它由后续的读锁请求检查。地址和命令队列120也包括一读锁失败队列(Read Lock Faik Queue)120d。读锁失败队列用于保持由于在存储器位置存在锁而失败的读存储器调用请求。即,一个微引擎发出一个具有读锁请求的存储器请求,该请求在地址和控制队列120中被处理。存储器请求在命令队列120c或读队列120b上操作,并将其识别为读锁请求。控制器26b访问锁查找设备142,以确定此存储器位置是否已经锁定。如果此存储器位置从任何以前的读锁请求被锁定,则此存储器锁定请求将失败,并将被存入读锁失孜队列120d。如果它被解锁或如果142在那个地址显示没有锁,则SRAM接口140使用那个存储器调用实现对存储器16b传统的SRAM地址读/写请求。命令控制器和地址生成器138也将锁输入到锁查找设备142,使得后续的读锁请求找到锁定的存储器位置。在对锁的需要结束以后,借助于程序中的微控制指令的操作解锁一存储器位置。通过清创造在SAM中的有效位解锁位置。解锁以后,读锁失败队列成为最高优先级队列,给所有排队的读锁失败一个发出存储器锁请求的机会。
参考图9,示出微引擎和FBUS接口逻辑(FBI)之间的通讯。在网络应用中的FBUS接口28能完成从FBUS18进入的数据包的头标处理。FBUS接口完成的关键功能是提取数据包的头标,以及在SRAM中微可编程源/目标/协议的散列查找。如果该散列未能成功地分解,该数据包的头标被送到核心处理器28作更复杂的处理。
FBI 28包含一个发送FIFO 182,一个接收FIFO 183,一个散列单元188和FBI控制及状态寄存器189。这4个单元与微引擎22通讯,通过时间多路复用(time-multipexed)访问到SRAM总线28,后者连接到在微引擎中的传输寄存器78,80。即,所有与微引擎的来往通讯是经过传输寄存器78,80。FBUS接口28包括一个用于在SRAM不使用SRAM数据总线(总线38的部发)的时间周期内将数据压入传输寄存器的压入状态机(push state machine 200),和一个用于从对应微引擎的传输寄存器取出数据的弹出状态机(pull statemachine)202。
散列单元包括一对FIFO=s 188a,188b。散列单元确定FBI28接收一个FBI_hash(散列)请求。散列单元188从发出调用的微引擎22取得散列键在键被取出并作散列以后,索引被送回到发出调用的微引擎22。在单个FBI_hash请求下完成最多3个散列。总线34和38每个都是单向的,SDRAM_push/pull_date,和sbus_push/pull_data。每个这样的总线需要控制信号,它提供对适当的微引擎22的传输寄存器的读/写控制。
通常,传输寄存器需要防止内存控制它们以保证读的正确性。如果thread_1使用写传输寄存器提供数据到SDRAM 16a,在从SDRAM控制器26a回来的信号指出此寄存器已被更新(promoted)并现在可以再使用以前thread_1必须不改写此寄存器。每次写不需要从目的地返回指出功能已完成的信号,因为如果线程将多个请求写到在那个目标的同一命令队列,在那个命令队列中完成的次序是保证的,因此只有最后命令需要发回信号到该线程。然而,如果该线程使用多个命令队列(命令或读),则这些命令请求必须分解成分别的上下文任务,使得通过上下文交换保持次序。在本章节开头指出的例外情况是关于某个类型的操作,它对FBUS状态信息使用从FBI到传输寄存器的未经请求的PUSH(压入)操作。为了保护在传输寄存器上的读/写决定(determinism),FBI在建立这些专门的FBI压入操作时,提供专门的Push_protect(压入_保护)信号。任何使用FBI未经请求压入技术的微引擎22在访问FBUS接口/微引擎一致的传输寄存器(microengine agreed upon transfer register)以前必须测试该保护标志。如果该标志未肯定。则传输寄存器可由微引擎访问。如果该标志肯定,则在访问该寄存器前上下文必须等待N周期。事先,此计数由被压入的传输寄存器数加上前端保护窗(frontend protection window)而确定。基本概念是微引擎必须测试此标志,随后在连续周期内迅速将它希望从读通用寄存器传输寄存器读的数据移到使得压入引擎与微引擎读不会有碰撞。
Claims (23)
1、一种操作多线程并行处理器的方法,其特征在于,包括如下步骤:指导具有多个微引擎的处理器将在指定的微引擎中当前运行的上下文交换到存储器,使另外的上下文在该微引擎中执行,并导致选择不同的上下文及相关的程序计数器,所述微引擎中的每一个都维持硬件中的多个程序计数器以及与该程序计数器相关的状态。
2、如权利要求1所述的方法,其特征在于,
当指定的信号被激活时,所述指导处理器的步骤唤醒被交换出去的上下文。
3、如权利要求2所述的方法,其特征在于,
将所述信号指定为所述指导步骤的参数,并指定事件的发生。
4、如权利要求3所述的方法,其特征在于,
所述参数指定为“sram swap”,并且所述指导步骤交换出当前的上下文,直到收到线程的SRAM信号时唤醒它。
5、如权利要求3所述的方法,其特征在于,
所述参数指定为“sdram swap”,并且所述指导步骤交换出当前的上下文,直到收到线程的SDRAM信号时唤醒它。
6、如权利要求3所述的方法,其特征在于,
所述参数指定为“FBI”,它交换出当前的上下文,并当收到指出已完成FBI CSR,Scratchpad,TFIFO,或RFIFO操作的线程的FBI信号时唤醒它。
7、如权利要求3所述的方法,其特征在于,
所述的参数指定为“seq_num1_change/seq_num2_change”,它交换出当前的上下文,并当顺序数的值改变时唤醒它。
8、如权利要求3所述的方法,其特征在于,
所述的参数指定为“inter_thread”,它交换出当前的上下文,并当接收到线程的内线程信号时唤醒它。
9、如权利要求3所述的方法,其特征在于,
所述参数指定为“Voluntary”,如果其他线程已准备好运行则交换出当前的上下文,并且如果该线程被交换出则在某个后续上下文判优点所述交换出的线程自动地再使能运行。
10、如权利要求3所述的方法,其特征在于,
所述参数指定为“auto_push”,它交换出当前的上下文,并当SRAM传输读寄存器数据自动地被FBUS接口压入时唤醒它。
11、如权利要求3所述的方法,其特征在于,
所述参数指定为“start_receive”,它交换出当前的上下文,并当在接收FIFO中新的数据对于该线程用来处理有效时唤醒它。
12、如权利要求3所述的方法,其特征在于,
所述参数指定为“kill”,它在对应该线程的适当的使能位并在CTX_ENABLES寄存器中置位以前,防止当前的上下文或线程再次执行。
13、如权利要求3所述的方法,其特征在于,
所述参数指定为“PCI”,它交换出当前的上下文,并当PCI单元发信号,通知DMA传输已经完成时唤醒它。
14、如权利要求3所述的方法,其特征在于,所述指导步骤还包括:
用选项_标记“defer one”规定在所述上下文被交换之前并在此调用后将执行一条指令。
15、一种操作多线程并行处理器的方法,其特征在于,包括如下步骤:
计算指定的参数以确定一个执行上下文过程的状态,和
完成交换操作,以导致按照计算的指定参数的值选择不同的上下文和相关的程序计算计数器。
16、如权利要求15所述的方法,其特征在于,
所述完成交换操作的步骤将当前在指定微引擎内运行的上下文交换到存储器,使另外上下文在该微引擎中执行。
17、如权利要求15所述的方法,其特征在于,
所述参数指定一个事件的发生。
18、如权利要求15所述的方法,其特征在于,
所述的参数指定为“静态存储器交换sram swap”,且所述完成交换操作的步骤包括交换出当前上下文并当收到线程的静态存储器SRAM信号时唤醒它。
19、如权利要求15所述的方法,其特征在于,
所述参数指定为“静态存储器交换sram swap”,且所述完成交换操作的步骤包括交换出当前上下文并当收到线程的同步动态存储器SDRAM信号时唤醒它。
20、如权利要求15所述的方法,其特征在于,
所述参数指定为“内线程inter_thread”,该线程交换出当前的上下文,并当收到该线程的内线程信号时唤醒该上下文。
21、如权利要求15所述的方法,其特征在于,还包括
用由“defer one”表示的选项标志规定在所述上下文被交换之前并在一条指令后将执行该条指令。
22、一种能执行多个上下文的并行处理器,其特征在于,包括
寄存器堆栈,
程序记数器,用于每个执行的上下文,
算术逻辑单元,连接到寄存器堆栈和程序控制存储器,该程序控制器存储存储上下文交换指令,该指令使处理器
计算指定的参数以确定执行的上下文过程的状态,和
完成交换操作,导致按照所计算的指定参数的值选择不同的上下文及相关的程序计数器,并且保存原来的程序计数器值。
23、如权利要求22所述的处理器,其特征在于,
当指定的信号被激活时,所述上下文交换指令唤醒被交换出的上下文。
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 |
---|---|
CN1402844A CN1402844A (zh) | 2003-03-12 |
CN1296818C true CN1296818C (zh) | 2007-01-24 |
Family
ID=22540994
Family Applications (7)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154171A Expired - Fee Related CN100342326C (zh) | 1999-09-01 | 2000-08-31 | 多线程处理器和操作处理器的方法 |
CNB008151237A Expired - Fee Related CN1296818C (zh) | 1999-09-01 | 2000-08-31 | 用于多线程并行处理器的指令 |
CNB008154376A Expired - Fee Related CN1184562C (zh) | 1999-09-01 | 2000-08-31 | 处理器的转移指令 |
CNB008148740A Expired - Fee Related CN1271513C (zh) | 1999-09-01 | 2000-08-31 | 转移指令的方法和处理器 |
CNB008144966A Expired - Fee Related CN100474236C (zh) | 1999-09-01 | 2000-08-31 | 多线程并行处理器及其维持线程执行的方法 |
CNB008154309A Expired - Fee Related CN1254739C (zh) | 1999-09-01 | 2000-08-31 | 处理器和操作处理器的方法 |
CNB008154120A Expired - Fee Related CN100351781C (zh) | 1999-09-01 | 2000-09-01 | 多线程并行处理器结构中所用的微引擎的存储器引用指令 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154171A Expired - Fee Related CN100342326C (zh) | 1999-09-01 | 2000-08-31 | 多线程处理器和操作处理器的方法 |
Family Applications After (5)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB008154376A Expired - Fee Related CN1184562C (zh) | 1999-09-01 | 2000-08-31 | 处理器的转移指令 |
CNB008148740A Expired - Fee Related CN1271513C (zh) | 1999-09-01 | 2000-08-31 | 转移指令的方法和处理器 |
CNB008144966A Expired - Fee Related CN100474236C (zh) | 1999-09-01 | 2000-08-31 | 多线程并行处理器及其维持线程执行的方法 |
CNB008154309A Expired - Fee Related CN1254739C (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) | EP1236094B1 (zh) |
CN (7) | CN100342326C (zh) |
AT (2) | ATE396449T1 (zh) |
AU (11) | AU7099000A (zh) |
CA (7) | CA2383526A1 (zh) |
DE (2) | DE60044752D1 (zh) |
HK (8) | HK1046049A1 (zh) |
TW (11) | TW559729B (zh) |
WO (8) | WO2001016715A1 (zh) |
Families Citing this family (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001016702A1 (en) | 1999-09-01 | 2001-03-08 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US7681018B2 (en) | 2000-08-31 | 2010-03-16 | Intel Corporation | Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set |
US7292586B2 (en) * | 2001-03-30 | 2007-11-06 | Nokia Inc. | Micro-programmable protocol packet parser and encapsulator |
US6785793B2 (en) | 2001-09-27 | 2004-08-31 | Intel Corporation | Method and apparatus for memory access scheduling to reduce memory access latency |
IL161107A0 (en) * | 2001-09-28 | 2004-08-31 | Tidal Networks Inc | Multi-threaded packet processing engine for stateful packet processing |
US7069442B2 (en) * | 2002-03-29 | 2006-06-27 | Intel Corporation | System and method for execution of a secured environment initialization instruction |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
GB2409062C (en) | 2003-12-09 | 2007-12-11 | Advanced Risc Mach Ltd | Aliasing data processing registers |
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 |
US9864602B2 (en) | 2011-12-30 | 2018-01-09 | 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 |
FI3812900T3 (fi) | 2016-12-31 | 2024-02-09 | Intel Corp | Järjestelmät, menetelmät ja laitteet heterogeenistä laskentaa varten |
US10387037B2 (en) * | 2016-12-31 | 2019-08-20 | Intel Corporation | Microarchitecture enabling enhanced parallelism for sparse linear algebra operations having write-to-read dependencies |
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 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0527392A2 (en) * | 1991-08-09 | 1993-02-17 | International Business Machines Corporation | Preemptive and non pre-emptive scheduling and executing of program threads in a multitasking operating system |
US5220669A (en) * | 1988-02-10 | 1993-06-15 | International Business Machines Corporation | Linkage mechanism for program isolation |
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 |
CN1188932A (zh) * | 1996-12-27 | 1998-07-29 | 国际商业机器公司 | 多线程处理器中指令和关联读取请求的后台完成 |
CN1193144A (zh) * | 1997-03-11 | 1998-09-16 | 国际商业机器公司 | 多线程处理器中性能监视的方法和*** |
CN1195135A (zh) * | 1997-03-28 | 1998-10-07 | 国际商业机器公司 | 多线程处理器中用于降低线程切换时延的方法和装置 |
WO1999018730A2 (en) * | 1997-10-07 | 1999-04-15 | Canal+ Societe Anonyme | Multithread data processor |
WO1999021083A1 (en) * | 1997-10-23 | 1999-04-29 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
US5926646A (en) * | 1997-09-11 | 1999-07-20 | Advanced Micro Devices, Inc. | Context-dependent memory-mapped registers for transparent expansion of a register file |
Family Cites Families (131)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3373408A (en) | 1965-04-16 | 1968-03-12 | Rca Corp | Computer capable of switching between programs without storage and retrieval of the contents of operation registers |
US3478322A (en) | 1967-05-23 | 1969-11-11 | Ibm | Data processor employing electronically changeable control storage |
US3577189A (en) * | 1969-01-15 | 1971-05-04 | Ibm | Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays |
BE795789A (fr) | 1972-03-08 | 1973-06-18 | Burroughs Corp | Microprogramme comportant une micro-instruction de recouvrement |
US3881173A (en) | 1973-05-14 | 1975-04-29 | Amdahl Corp | Condition code determination and data processing |
IT986411B (it) | 1973-06-05 | 1975-01-30 | Olivetti E C Spa | Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario |
FR2253415A5 (zh) * | 1973-12-04 | 1975-06-27 | Cii | |
US3913074A (en) | 1973-12-18 | 1975-10-14 | Honeywell Inf Systems | Search processing apparatus |
US4130890A (en) | 1977-06-08 | 1978-12-19 | Itt Industries, Inc. | Integrated DDC memory with bitwise erase |
US4392758A (en) | 1978-05-22 | 1983-07-12 | International Business Machines Corporation | Underscore erase |
JPS56164464A (en) | 1980-05-21 | 1981-12-17 | Tatsuo Nogi | Parallel processing computer |
US4400770A (en) | 1980-11-10 | 1983-08-23 | International Business Machines Corporation | Cache synonym detection and handling means |
CA1179069A (en) | 1981-04-10 | 1984-12-04 | Yasushi Fukunaga | Data transmission apparatus for a multiprocessor system |
US4471426A (en) * | 1981-07-02 | 1984-09-11 | Texas Instruments Incorporated | Microcomputer which fetches two sets of microcode bits at one time |
US4454595A (en) | 1981-12-23 | 1984-06-12 | Pitney Bowes Inc. | Buffer for use with a fixed disk controller |
US4477872A (en) | 1982-01-15 | 1984-10-16 | International Business Machines Corporation | Decode history table for conditional branch instructions |
US4569016A (en) | 1983-06-30 | 1986-02-04 | International Business Machines Corporation | Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system |
JPS6014338A (ja) * | 1983-06-30 | 1985-01-24 | インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション | 計算機システムにおける分岐機構 |
US4606025A (en) | 1983-09-28 | 1986-08-12 | International Business Machines Corp. | Automatically testing a plurality of memory arrays on selected memory array testers |
US4808988A (en) | 1984-04-13 | 1989-02-28 | Megatek Corporation | Digital vector generator for a graphic display system |
US4868735A (en) | 1984-05-08 | 1989-09-19 | Advanced Micro Devices, Inc. | Interruptible structured microprogrammed sixteen-bit address sequence controller |
US4742451A (en) | 1984-05-21 | 1988-05-03 | Digital Equipment Corporation | Instruction prefetch system for conditional branch instruction for central processor unit |
US5187800A (en) | 1985-01-04 | 1993-02-16 | Sun Microsystems, Inc. | Asynchronous pipelined data processing system |
US5045995A (en) | 1985-06-24 | 1991-09-03 | Vicom Systems, Inc. | Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system |
US4755966A (en) | 1985-06-28 | 1988-07-05 | Hewlett-Packard Company | Bidirectional branch prediction and optimization |
US4754398A (en) * | 1985-06-28 | 1988-06-28 | Cray Research, Inc. | System for multiprocessor communication using local and common semaphore and information registers |
US4777587A (en) | 1985-08-30 | 1988-10-11 | Advanced Micro Devices, Inc. | System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses |
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 |
US5021945A (en) | 1985-10-31 | 1991-06-04 | Mcc Development, Ltd. | Parallel processor system for processing natural concurrencies and method therefor |
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 |
DE68913629T2 (de) | 1988-03-14 | 1994-06-16 | Unisys Corp | Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem. |
US5056015A (en) | 1988-03-23 | 1991-10-08 | Du Pont Pixel Systems Limited | Architectures for serial or parallel loading of writable control store |
US5165025A (en) | 1988-10-06 | 1992-11-17 | Lass Stanley E | Interlacing the paths after a conditional branch like instruction |
US5202972A (en) | 1988-12-29 | 1993-04-13 | International Business Machines Corporation | Store buffer apparatus in a multiprocessor system |
US5155854A (en) | 1989-02-03 | 1992-10-13 | Digital Equipment Corporation | System for arbitrating communication requests using multi-pass control unit based on availability of system resources |
US5155831A (en) | 1989-04-24 | 1992-10-13 | International Business Machines Corporation | Data processing system with fast queue store interposed between store-through caches and a main memory |
US5113516A (en) * | 1989-07-31 | 1992-05-12 | North American Philips Corporation | Data repacker having controlled feedback shifters and registers for changing data format |
US5168555A (en) | 1989-09-06 | 1992-12-01 | Unisys Corporation | Initial program load control |
US5263169A (en) | 1989-11-03 | 1993-11-16 | Zoran Corporation | Bus arbitration and resource management for concurrent vector signal processor architecture |
DE3942977A1 (de) | 1989-12-23 | 1991-06-27 | Standard Elektrik Lorenz Ag | Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer |
US5544337A (en) | 1989-12-29 | 1996-08-06 | Cray Research, Inc. | Vector processor having registers for control by vector resisters |
US5247671A (en) | 1990-02-14 | 1993-09-21 | International Business Machines Corporation | Scalable schedules for serial communications controller in data processing systems |
JPH0799812B2 (ja) | 1990-03-26 | 1995-10-25 | 株式会社グラフイックス・コミュニケーション・テクノロジーズ | 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置 |
US5390329A (en) | 1990-06-11 | 1995-02-14 | Cray Research, Inc. | Responding to service requests using minimal system-side context in a multiprocessor environment |
JPH0454652A (ja) * | 1990-06-25 | 1992-02-21 | Nec Corp | マイクロコンピュータ |
US5347648A (en) | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
EP0463973A3 (en) * | 1990-06-29 | 1993-12-01 | Digital Equipment Corp | Branch prediction in high performance processor |
US5432918A (en) | 1990-06-29 | 1995-07-11 | Digital Equipment Corporation | Method and apparatus for ordering read and write operations using conflict bits in a write queue |
US5404482A (en) | 1990-06-29 | 1995-04-04 | Digital Equipment Corporation | Processor and method for preventing access to a locked memory block by recording a lock in a content addressable memory with outstanding cache fills |
DE4129614C2 (de) * | 1990-09-07 | 2002-03-21 | Hitachi Ltd | System und Verfahren zur Datenverarbeitung |
JP2508907B2 (ja) * | 1990-09-18 | 1996-06-19 | 日本電気株式会社 | 遅延分岐命令の制御方式 |
EP0553158B1 (en) * | 1990-10-19 | 1994-12-28 | Cray Research, Inc. | A scalable parallel vector computer system |
US5367678A (en) | 1990-12-06 | 1994-11-22 | The Regents Of The University Of California | Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically |
US5394530A (en) | 1991-03-15 | 1995-02-28 | Nec Corporation | Arrangement for predicting a branch target address in the second iteration of a short loop |
EP0522513A2 (en) | 1991-07-09 | 1993-01-13 | Hughes Aircraft Company | High speed parallel microcode program controller |
US5255239A (en) | 1991-08-13 | 1993-10-19 | Cypress Semiconductor Corporation | Bidirectional first-in-first-out memory device with transparent and user-testable capabilities |
US5623489A (en) | 1991-09-26 | 1997-04-22 | Ipc Information Systems, Inc. | Channel allocation system for distributed digital switching network |
US5392412A (en) | 1991-10-03 | 1995-02-21 | Standard Microsystems Corporation | Data communication controller for use with a single-port data packet buffer |
US5392391A (en) | 1991-10-18 | 1995-02-21 | Lsi Logic Corporation | High performance graphics applications controller |
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 |
US5463746A (en) | 1992-10-30 | 1995-10-31 | International Business Machines Corp. | Data processing system having prediction by using an embedded guess bit of remapped and compressed opcodes |
US5481683A (en) * | 1992-10-30 | 1996-01-02 | International Business Machines Corporation | Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions |
US5450603A (en) | 1992-12-18 | 1995-09-12 | Xerox Corporation | SIMD architecture with transfer register or value source circuitry connected to bus |
DE69422448T2 (de) | 1992-12-23 | 2001-08-23 | Eta Sa Fabriques D Ebauches Gr | Multi-tasking-steuerungsgerät mit geringem energieverbrauch |
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 |
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 |
US5363448A (en) | 1993-06-30 | 1994-11-08 | United Technologies Automotive, Inc. | Pseudorandom number generation and cryptographic authentication |
CA2107299C (en) | 1993-09-29 | 1997-02-25 | Mehrad Yasrebi | High performance machine for switched communications in a heterogenous data processing network gateway |
US5446736A (en) | 1993-10-07 | 1995-08-29 | Ast Research, Inc. | Method and apparatus for connecting a node to a wireless network using a standard protocol |
EP0650116B1 (en) | 1993-10-21 | 1998-12-09 | Sun Microsystems, Inc. | Counterflow pipeline processor |
DE69430352T2 (de) | 1993-10-21 | 2003-01-30 | Sun Microsystems Inc | Gegenflusspipeline |
TW261676B (zh) * | 1993-11-02 | 1995-11-01 | Motorola Inc | |
US5450351A (en) | 1993-11-19 | 1995-09-12 | International Business Machines Corporation | Content addressable memory implementation with random access memory |
US6079014A (en) * | 1993-12-02 | 2000-06-20 | Intel Corporation | Processor that redirects an instruction fetch pipeline immediately upon detection of a mispredicted branch while committing prior instructions to an architectural state |
US5487159A (en) | 1993-12-23 | 1996-01-23 | Unisys Corporation | System for processing shift, mask, and merge operations in one instruction |
EP0661625B1 (en) * | 1994-01-03 | 1999-09-08 | Intel Corporation | Method and apparatus for implementing a four stage branch resolution system in a computer processor |
US5490204A (en) | 1994-03-01 | 1996-02-06 | Safco Corporation | Automated quality assessment system for cellular networks |
US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
US5542088A (en) | 1994-04-29 | 1996-07-30 | Intergraph Corporation | Method and apparatus for enabling control of task execution |
US5544236A (en) | 1994-06-10 | 1996-08-06 | At&T Corp. | Access to unsubscribed features |
US5574922A (en) | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
FR2722041B1 (fr) * | 1994-06-30 | 1998-01-02 | Samsung Electronics Co Ltd | Decodeur de huffman |
US5655132A (en) * | 1994-08-08 | 1997-08-05 | Rockwell International Corporation | Register file with multi-tasking support |
US5640538A (en) | 1994-08-22 | 1997-06-17 | Adaptec, Inc. | Programmable timing mark sequencer for a disk drive |
US5717760A (en) * | 1994-11-09 | 1998-02-10 | Channel One Communications, Inc. | Message protection system and method |
CN100507834C (zh) * | 1994-12-02 | 2009-07-01 | 现代电子美国公司 | 有限游程转移预测 |
US5610864A (en) | 1994-12-23 | 1997-03-11 | Micron Technology, Inc. | Burst EDO memory device with maximized write cycle timing |
US5550816A (en) | 1994-12-29 | 1996-08-27 | Storage Technology Corporation | Method and apparatus for virtual switching |
US5649157A (en) | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US5592622A (en) | 1995-05-10 | 1997-01-07 | 3Com Corporation | Network intermediate system with message passing architecture |
JP3130446B2 (ja) * | 1995-05-10 | 2001-01-31 | 松下電器産業株式会社 | プログラム変換装置及びプロセッサ |
US5541920A (en) | 1995-06-15 | 1996-07-30 | Bay Networks, Inc. | Method and apparatus for a delayed replace mechanism for a streaming packet modification engine |
KR0180169B1 (ko) * | 1995-06-30 | 1999-05-01 | 배순훈 | 가변길이 부호기 |
US5613071A (en) | 1995-07-14 | 1997-03-18 | Intel Corporation | Method and apparatus for providing remote memory access in a distributed memory multiprocessor system |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US6058465A (en) * | 1996-08-19 | 2000-05-02 | Nguyen; Le Trong | Single-instruction-multiple-data processing in a multimedia signal processor |
US6061711A (en) * | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
CN100373331C (zh) * | 1996-08-27 | 2008-03-05 | 松下电器产业株式会社 | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 |
US5951679A (en) * | 1996-10-31 | 1999-09-14 | Texas Instruments Incorporated | Microprocessor circuits, systems, and methods for issuing successive iterations of a short backward branch loop in a single cycle |
US5857104A (en) * | 1996-11-26 | 1999-01-05 | Hewlett-Packard Company | Synthetic dynamic branch prediction |
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 |
DE69841526D1 (de) * | 1997-03-04 | 2010-04-15 | Panasonic Corp | Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor |
US5996068A (en) * | 1997-03-26 | 1999-11-30 | Lucent Technologies Inc. | Method and apparatus for renaming registers corresponding to multiple thread identifications |
US6009515A (en) * | 1997-05-30 | 1999-12-28 | Sun Microsystems, Inc. | Digital data processing system including efficient arrangement to support branching within trap shadows |
GB2326253A (en) * | 1997-06-10 | 1998-12-16 | Advanced Risc Mach Ltd | Coprocessor data access control |
US6385720B1 (en) * | 1997-07-14 | 2002-05-07 | Matsushita Electric Industrial Co., Ltd. | Branch prediction method and processor using origin information, relative position information and history information |
US6243735B1 (en) * | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
US6560629B1 (en) * | 1998-10-30 | 2003-05-06 | Sun Microsystems, Inc. | Multi-thread processing |
-
2000
- 2000-08-31 US US10/069,195 patent/US7421572B1/en not_active Expired - Fee Related
- 2000-08-31 CN CNB008154171A patent/CN100342326C/zh not_active Expired - Fee Related
- 2000-08-31 CA CA002383526A patent/CA2383526A1/en not_active Abandoned
- 2000-08-31 CA CA002386562A patent/CA2386562A1/en not_active Abandoned
- 2000-08-31 EP EP00961457A patent/EP1236094B1/en not_active Expired - Lifetime
- 2000-08-31 AU AU70990/00A patent/AU7099000A/en not_active Abandoned
- 2000-08-31 AU AU70979/00A patent/AU7097900A/en not_active Abandoned
- 2000-08-31 AU AU73406/00A patent/AU7340600A/en not_active Abandoned
- 2000-08-31 AU AU73407/00A patent/AU7340700A/en not_active Abandoned
- 2000-08-31 CN CNB008151237A patent/CN1296818C/zh not_active Expired - Fee Related
- 2000-08-31 EP EP00959712A patent/EP1236097A4/en not_active Withdrawn
- 2000-08-31 CA CA002383532A patent/CA2383532A1/en not_active Abandoned
- 2000-08-31 AU AU70987/00A patent/AU7098700A/en not_active Abandoned
- 2000-08-31 WO PCT/US2000/023983 patent/WO2001016715A1/en active Application Filing
- 2000-08-31 AU AU73404/00A patent/AU7340400A/en not_active Abandoned
- 2000-08-31 EP EP00959714A patent/EP1236093A4/en not_active Ceased
- 2000-08-31 WO PCT/US2000/023996 patent/WO2001016716A1/en active Application Filing
- 2000-08-31 AU AU70986/00A patent/AU7098600A/en not_active Abandoned
- 2000-08-31 WO PCT/US2000/023994 patent/WO2001016722A1/en active Application Filing
- 2000-08-31 CA CA002386558A patent/CA2386558C/en not_active Expired - Fee Related
- 2000-08-31 WO PCT/US2000/024006 patent/WO2001016713A1/en active Application Filing
- 2000-08-31 WO PCT/US2000/023982 patent/WO2001016758A2/en active Application Filing
- 2000-08-31 CN CNB008154376A patent/CN1184562C/zh not_active Expired - Fee Related
- 2000-08-31 WO PCT/US2000/023992 patent/WO2001018646A1/en active Application Filing
- 2000-08-31 EP EP00959713A patent/EP1242869B1/en not_active Expired - Lifetime
- 2000-08-31 EP EP00959717A patent/EP1236092A4/en not_active Ceased
- 2000-08-31 DE DE60044752T patent/DE60044752D1/de not_active Expired - Lifetime
- 2000-08-31 CN CNB008148740A patent/CN1271513C/zh not_active Expired - Fee Related
- 2000-08-31 CN CNB008144966A patent/CN100474236C/zh not_active Expired - Fee Related
- 2000-08-31 AT AT00959711T patent/ATE396449T1/de not_active IP Right Cessation
- 2000-08-31 EP EP00959711A patent/EP1236088B9/en not_active Expired - Lifetime
- 2000-08-31 CA CA002383528A patent/CA2383528C/en not_active Expired - Fee Related
- 2000-08-31 CN CNB008154309A patent/CN1254739C/zh not_active Expired - Fee Related
- 2000-08-31 WO PCT/US2000/024000 patent/WO2001016714A1/en active Application Filing
- 2000-08-31 AT AT00961457T patent/ATE475930T1/de not_active IP Right Cessation
- 2000-08-31 AU AU70984/00A patent/AU7098400A/en not_active Abandoned
- 2000-08-31 DE DE60038976T patent/DE60038976D1/de not_active Expired - Lifetime
- 2000-08-31 CA CA002383531A patent/CA2383531A1/en not_active Abandoned
- 2000-08-31 AU AU70985/00A patent/AU7098500A/en not_active Abandoned
- 2000-09-01 CN CNB008154120A patent/CN100351781C/zh not_active Expired - Fee Related
- 2000-09-01 AU AU73429/00A patent/AU7342900A/en not_active Abandoned
- 2000-09-01 CA CA002383540A patent/CA2383540A1/en not_active Abandoned
- 2000-09-01 TW TW089117903A patent/TW559729B/zh not_active IP Right Cessation
- 2000-09-01 AU AU71012/00A patent/AU7101200A/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-10-18 TW TW089117912A patent/TW546585B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117911A patent/TW548584B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117904A patent/TW475148B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117901A patent/TWI220732B/zh not_active IP Right Cessation
- 2000-10-18 TW TW089117906A patent/TWI221251B/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 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 TW089117902A patent/TW571239B/zh not_active IP Right Cessation
-
2002
- 2002-10-21 HK HK02107606.9A patent/HK1046049A1/zh unknown
- 2002-11-07 HK HK02108082.0A patent/HK1046565A1/zh unknown
- 2002-11-07 HK HK02108083.9A patent/HK1046566A1/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 HK03103923A patent/HK1051728A1/xx not_active IP Right Cessation
- 2003-06-03 HK HK03103924A patent/HK1051729A1/xx not_active IP Right Cessation
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5220669A (en) * | 1988-02-10 | 1993-06-15 | International Business Machines Corporation | Linkage mechanism for program isolation |
EP0527392A2 (en) * | 1991-08-09 | 1993-02-17 | International Business Machines Corporation | Preemptive and non pre-emptive scheduling and executing of program threads in a multitasking operating system |
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 |
CN1188932A (zh) * | 1996-12-27 | 1998-07-29 | 国际商业机器公司 | 多线程处理器中指令和关联读取请求的后台完成 |
CN1193144A (zh) * | 1997-03-11 | 1998-09-16 | 国际商业机器公司 | 多线程处理器中性能监视的方法和*** |
CN1195135A (zh) * | 1997-03-28 | 1998-10-07 | 国际商业机器公司 | 多线程处理器中用于降低线程切换时延的方法和装置 |
US5926646A (en) * | 1997-09-11 | 1999-07-20 | Advanced Micro Devices, Inc. | Context-dependent memory-mapped registers for transparent expansion of a register file |
WO1999018730A2 (en) * | 1997-10-07 | 1999-04-15 | Canal+ Societe Anonyme | Multithread data processor |
WO1999021083A1 (en) * | 1997-10-23 | 1999-04-29 | International Business Machines Corporation | Thread switch control in a multithreaded processor system |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1296818C (zh) | 用于多线程并行处理器的指令 | |
CN1185592C (zh) | 并行处理器结构 | |
CN1192314C (zh) | 并行处理器结构的sram控制器 | |
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN100342349C (zh) | 错误推测之后的指令再执行的流水线外部跟踪缓冲器 | |
CN1205553C (zh) | 分优先级访问外部装置的设备 | |
CN1199109C (zh) | 通过重排序存储器请求提高总线利用率的存储器控制器 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1285064A (zh) | 进行无序多线程执行的加载和存储指令排序*** | |
CN1249963C (zh) | 使用分组摘要信息快速和自适应处理分组的设备和方法 | |
CN1846194A (zh) | 一种在处理器中执行的计算线程的暂停与解除分配的整合机制 | |
CN1357121A (zh) | 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1286769A (zh) | 具有多程序计数器和在执行流水线外面的追踪缓冲区的处理器 | |
CN1333891A (zh) | 利用页标志寄存器跟踪存储器装置内物理页的状态 | |
CN1967506A (zh) | 高速缓存存储器处理器中的合并入口 | |
CN1291325C (zh) | 通过源/目的转换机构实现高速存储器克隆的方法和*** | |
CN1243311C (zh) | 实现重叠操作的方法和*** | |
CN1504902A (zh) | 在存储器部件之间保持数据一致性的方法和*** | |
CN1199120C (zh) | 具有共享一个共用存储器的多个处理器的装置 | |
CN1026037C (zh) | 指令执行高效率生产线方法及装置 | |
CN1311357C (zh) | 通用资源访问控制器 | |
CN1504904A (zh) | 存储器克隆操作期间保护高速缓冲存储器线的方法和*** | |
CN1558325A (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 |
Granted publication date: 20070124 Termination date: 20170831 |
|
CF01 | Termination of patent right due to non-payment of annual fee |