CN1402846A - 用于多线程处理器的转移指令 - Google Patents

用于多线程处理器的转移指令 Download PDF

Info

Publication number
CN1402846A
CN1402846A CN00814874A CN00814874A CN1402846A CN 1402846 A CN1402846 A CN 1402846A CN 00814874 A CN00814874 A CN 00814874A CN 00814874 A CN00814874 A CN 00814874A CN 1402846 A CN1402846 A CN 1402846A
Authority
CN
China
Prior art keywords
environment
instruction
memory
processor
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.)
Granted
Application number
CN00814874A
Other languages
English (en)
Other versions
CN1271513C (zh
Inventor
G·沃尔瑞奇
M·J·艾迪莱塔
W·威勒
D·伯恩斯坦因
D·胡伯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN1402846A publication Critical patent/CN1402846A/zh
Application granted granted Critical
Publication of CN1271513C publication Critical patent/CN1271513C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming

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

本发明描述一个并行的基于硬件的多线程处理器(12)。处理器(12)包括一个协调***功能的通用处理器和多个微引擎(22a-22f),后者支持多个硬件线程或环境。处理器(12)还包括一个存储控制***(16),它具有第一存储控制器(26a),根据存储器调用是否针对一个偶数存储器或一个奇数存储器来排序存储器调用;还具有第二存储控制器(26b),根据该存储器调用是读调用或写调用优化存储器调用。本发明还揭示了用于根据执行环境切换和转移的指令。

Description

用于多线程处理器的转移指令
背景技术
本发明涉及转移指令。
在计算处理中并行处理是同时发生事件的信息处理的有效形式。并行处理要求在一台计算机中同时执行多个程序。相反,顺序处理或串行处理在单个站沿顺序完成所有任务,或者一个管线(流水线)机器以专用的站完成各任务。计算机程序无论是以并行处理、管线或顺序处理方式执行均包括转移,其中一个指令流以顺序方式执行,并从一个指令序列转移到不同的指令序列。附图概述
图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结构实现的核心处理器,可以使用如MicrosoftNTreal-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/100 BaseT 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位宽读总线和以1 66MHz运行的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/shifter/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,l或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_numl_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位源字段(aa-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 Fail)队列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 (15)

1.一种计算机指令,其特征在于包括:
环境转移,它根据当前的环境号是否匹配指定的环境号使指令流转移到具有在指定标号处地址的另一个指令流。
2.如权利要求1所述的环境转移指令,其特征在于,所述指令具有下述格式
br=ctx[ctx,label#],optional_token
br!=ctx[ctx,label#],optional_token
3.如权利要求2所述的环境转移指令,其特征在于,label#是对应于一条指令的地址的符号标号,ctx是环境号。
4.如权利要求3所述的环境转移指令,其特征在于,所述的环境号具有有效值1,2或3。
5.如权利要求1所述的环境转移指令,其特征在于,所述指令具有optional_token。
6.如权利要求5所述的环境转移指令,其特征在于,所述指令具有可选标记,使得延时引起处理器在完成转移操作之前执行转移指令后面的指令。
7.一种操作处理器的方法,其特征在于,包括下述步骤:
估算一个执行环境的环境号以确定是否执行环境的环境号匹配指定的环境号;且
按照计算执行环境的环境号,转移到一条指定的指令。
8.如权利要求7所述的方法,其特征在于,所述转移进一步包括:
如果执行环境号匹配指定的环境号就转移。
9.如权利要求7所述的方法,其特征在于,所述的环境号具有有效值0、1、2或3。
10.一种能执行多个环境的处理器,其特征在于,它包括:
一个寄存器堆栈;
用于每个执行环境的程序计数器;
连接到寄存器堆栈的算术逻辑单元和存储环境交换指令的程序控制存储,它使处理器执行:
计算一个执行环境的环境号以确定是否执行环境的环境号匹配指定的环境号;且
按照计算的执行环境的环境号转移到一条指定的指令。
11.如权利要求10所述的处理器,其特征在于,如果所述执行环境的号匹配指定的环境号,则发生转移。
12.如权利要求10所述的处理器,其特征在于,所述的环境号具有有效值0、1、2或3。
13.一种留驻在计算机可读介质、用于使执行多个环境的处理器完成一个功能的计算机程序产品,其特征在于,它包括的指令使处理器执行下列动作:
计算一个执行环境的环境号以确定是否执行环境的环境号与指定的环境号匹配;且根据计算的执行环境的环境号,转移至一条规定的指令。
14.如权利要求13所述的产品,其特征在于,如果所述执行环境的号匹配指定的环境号,发生转移。
15.如权利要求13所述的产品,其特征在于,所述的环境号具有有效值0、1、2或3。
CNB008148740A 1999-09-01 2000-08-31 转移指令的方法和处理器 Expired - Fee Related CN1271513C (zh)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
CN1402846A true CN1402846A (zh) 2003-03-12
CN1271513C CN1271513C (zh) 2006-08-23

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 (3)

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 处理器的转移指令

Family Applications After (3)

Application Number Title Priority Date Filing Date
CNB008144966A Expired - Fee Related CN100474236C (zh) 1999-09-01 2000-08-31 多线程并行处理器及其维持线程执行的方法
CNB008154309A Expired - Fee Related CN1254739C (zh) 1999-09-01 2000-08-31 处理器和操作处理器的方法
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US7292586B2 (en) * 2001-03-30 2007-11-06 Nokia Inc. Micro-programmable protocol packet parser and encapsulator
US6785793B2 (en) 2001-09-27 2004-08-31 Intel Corporation Method and apparatus for memory access scheduling to reduce memory access latency
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

Family Cites Families (140)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3373408A (en) 1965-04-16 1968-03-12 Rca Corp Computer capable of switching between programs without storage and retrieval of the contents of operation registers
US3478322A (en) 1967-05-23 1969-11-11 Ibm Data processor employing electronically changeable control storage
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
BE795789A (fr) 1972-03-08 1973-06-18 Burroughs Corp Microprogramme comportant une micro-instruction de recouvrement
US3881173A (en) 1973-05-14 1975-04-29 Amdahl Corp Condition code determination and data processing
IT986411B (it) 1973-06-05 1975-01-30 Olivetti E C Spa Sistema per trasferire il control lo delle elaborazioni da un primo livello prioritario ad un secondo livello prioritario
FR2253415A5 (zh) * 1973-12-04 1975-06-27 Cii
US3913074A (en) 1973-12-18 1975-10-14 Honeywell Inf Systems Search processing apparatus
US4130890A (en) 1977-06-08 1978-12-19 Itt Industries, Inc. Integrated DDC memory with bitwise erase
US4392758A (en) 1978-05-22 1983-07-12 International Business Machines Corporation Underscore erase
JPS56164464A (en) 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4400770A (en) 1980-11-10 1983-08-23 International Business Machines Corporation Cache synonym detection and handling means
CA1179069A (en) 1981-04-10 1984-12-04 Yasushi Fukunaga Data transmission apparatus for a multiprocessor system
US4471426A (en) * 1981-07-02 1984-09-11 Texas Instruments Incorporated Microcomputer which fetches two sets of microcode bits at one time
US4454595A (en) 1981-12-23 1984-06-12 Pitney Bowes Inc. Buffer for use with a fixed disk controller
US4477872A (en) 1982-01-15 1984-10-16 International Business Machines Corporation Decode history table for conditional branch instructions
US4569016A (en) 1983-06-30 1986-02-04 International Business Machines Corporation Mechanism for implementing one machine cycle executable mask and rotate instructions in a primitive instruction set computing system
JPS6014338A (ja) * 1983-06-30 1985-01-24 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション 計算機システムにおける分岐機構
US4606025A (en) 1983-09-28 1986-08-12 International Business Machines Corp. Automatically testing a plurality of memory arrays on selected memory array testers
US4808988A (en) 1984-04-13 1989-02-28 Megatek Corporation Digital vector generator for a graphic display system
US4868735A (en) 1984-05-08 1989-09-19 Advanced Micro Devices, Inc. Interruptible structured microprogrammed sixteen-bit address sequence controller
US4742451A (en) 1984-05-21 1988-05-03 Digital Equipment Corporation Instruction prefetch system for conditional branch instruction for central processor unit
US5187800A (en) 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
US5045995A (en) 1985-06-24 1991-09-03 Vicom Systems, Inc. Selective operation of processing elements in a single instruction multiple data stream (SIMD) computer system
US4755966A (en) 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
US4754398A (en) * 1985-06-28 1988-06-28 Cray Research, Inc. System for multiprocessor communication using local and common semaphore and information registers
US4777587A (en) 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
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
US5220669A (en) * 1988-02-10 1993-06-15 International Business Machines Corporation Linkage mechanism for program isolation
DE68913629T2 (de) 1988-03-14 1994-06-16 Unisys Corp Satzverriegelungsprozessor für vielfachverarbeitungsdatensystem.
US5056015A (en) 1988-03-23 1991-10-08 Du Pont Pixel Systems Limited Architectures for serial or parallel loading of writable control store
US5165025A (en) 1988-10-06 1992-11-17 Lass Stanley E Interlacing the paths after a conditional branch like instruction
US5202972A (en) 1988-12-29 1993-04-13 International Business Machines Corporation Store buffer apparatus in a multiprocessor system
US5155854A (en) 1989-02-03 1992-10-13 Digital Equipment Corporation System for arbitrating communication requests using multi-pass control unit based on availability of system resources
US5155831A (en) 1989-04-24 1992-10-13 International Business Machines Corporation Data processing system with fast queue store interposed between store-through caches and a main memory
US5113516A (en) * 1989-07-31 1992-05-12 North American Philips Corporation Data repacker having controlled feedback shifters and registers for changing data format
US5168555A (en) 1989-09-06 1992-12-01 Unisys Corporation Initial program load control
US5263169A (en) 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
DE3942977A1 (de) 1989-12-23 1991-06-27 Standard Elektrik Lorenz Ag Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer
US5544337A (en) 1989-12-29 1996-08-06 Cray Research, Inc. Vector processor having registers for control by vector resisters
US5247671A (en) 1990-02-14 1993-09-21 International Business Machines Corporation Scalable schedules for serial communications controller in data processing systems
JPH0799812B2 (ja) 1990-03-26 1995-10-25 株式会社グラフイックス・コミュニケーション・テクノロジーズ 信号符号化装置および信号復号化装置、並びに信号符号化復号化装置
US5390329A (en) 1990-06-11 1995-02-14 Cray Research, Inc. Responding to service requests using minimal system-side context in a multiprocessor environment
JPH0454652A (ja) * 1990-06-25 1992-02-21 Nec Corp マイクロコンピュータ
US5347648A (en) 1990-06-29 1994-09-13 Digital Equipment Corporation Ensuring write ordering under writeback cache error conditions
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
US5247675A (en) * 1991-08-09 1993-09-21 International Business Machines Corporation Preemptive and non-preemptive scheduling and execution of program threads in a multitasking operating system
US5255239A (en) 1991-08-13 1993-10-19 Cypress Semiconductor Corporation Bidirectional first-in-first-out memory device with transparent and user-testable capabilities
US5623489A (en) 1991-09-26 1997-04-22 Ipc Information Systems, Inc. Channel allocation system for distributed digital switching network
US5392412A (en) 1991-10-03 1995-02-21 Standard Microsystems Corporation Data communication controller for use with a single-port data packet buffer
US5392391A (en) 1991-10-18 1995-02-21 Lsi Logic Corporation High performance graphics applications controller
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
US5428779A (en) 1992-11-09 1995-06-27 Seiko Epson Corporation System and method for supporting context switching within a multiprocessor system having functional blocks that generate state programs with coded register load instructions
US5450603A (en) 1992-12-18 1995-09-12 Xerox Corporation SIMD architecture with transfer register or value source circuitry connected to bus
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
US6088788A (en) * 1996-12-27 2000-07-11 International Business Machines Corporation Background completion of instruction and associated fetch request in a multithread processor
US6029228A (en) * 1996-12-31 2000-02-22 Texas Instruments Incorporated Data prefetching of a load target buffer for post-branch instructions based on past prediction accuracy's of branch predictions
DE69841526D1 (de) * 1997-03-04 2010-04-15 Panasonic Corp Zur effizienten Ausführung vieler asynchronen Ereignisaufgaben geeigneter Prozessor
US5835705A (en) * 1997-03-11 1998-11-10 International Business Machines Corporation Method and system for performance per-thread monitoring in a multithreaded processor
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5907702A (en) * 1997-03-28 1999-05-25 International Business Machines Corporation Method and apparatus for decreasing thread switch latency in a multithread processor
US6009515A (en) * 1997-05-30 1999-12-28 Sun Microsystems, Inc. Digital data processing system including efficient arrangement to support branching within trap shadows
GB2326253A (en) * 1997-06-10 1998-12-16 Advanced Risc Mach Ltd Coprocessor data access control
US6385720B1 (en) * 1997-07-14 2002-05-07 Matsushita Electric Industrial Co., Ltd. Branch prediction method and processor using origin information, relative position information and history information
US6243735B1 (en) * 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
US5926646A (en) * 1997-09-11 1999-07-20 Advanced Micro Devices, Inc. Context-dependent memory-mapped registers for transparent expansion of a register file
UA55489C2 (uk) * 1997-10-07 2003-04-15 Каналь+ Сосьєте Анонім Пристрій для багатопотокової обробки даних (варіанти)
US6567839B1 (en) * 1997-10-23 2003-05-20 International Business Machines Corporation Thread switch control in a multithreaded processor system
US6560629B1 (en) * 1998-10-30 2003-05-06 Sun Microsystems, Inc. Multi-thread processing

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1271513C (zh) 转移指令的方法和处理器
CN1185592C (zh) 并行处理器结构
CN1192314C (zh) 并行处理器结构的sram控制器
CN1387644A (zh) 并行处理器体系结构的sdram控制器
CN1387641A (zh) 并行处理器中的多线程执行
CN1280714C (zh) 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器
CN100342349C (zh) 错误推测之后的指令再执行的流水线外部跟踪缓冲器
CN1749955A (zh) 控制处理器和协处理器间的数据传输的运算处理装置
CN1285064A (zh) 进行无序多线程执行的加载和存储指令排序***
CN1846194A (zh) 一种在处理器中执行的计算线程的暂停与解除分配的整合机制
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1934543A (zh) 高速缓冲存储器及其控制方法
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1916962A (zh) 存储和回存状态上下文在图形处理单元的方法和装置
CN1916961A (zh) 可中断图形处理单元及其控制方法
CN1912926A (zh) 可中断图形处理单元处理多个程序的方法和图形处理单元
CN1993674A (zh) 多芯架构中的资源管理
CN1319210A (zh) 可配置的硬件块的配置方法
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和***
CN1117315C (zh) 微处理机及多处理机***
CN1243311C (zh) 实现重叠操作的方法和***
CN1397886A (zh) 假想分支目标地址高速缓存
CN1095133C (zh) 多处理器计算机***中共享结果数据的方法,装置和***
CN1397874A (zh) 高速缓存的快取线选取目标地址的装置及方法
CN1506809A (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