CN1387640A - 处理器结构的转移指令 - Google Patents

处理器结构的转移指令 Download PDF

Info

Publication number
CN1387640A
CN1387640A CN00815430A CN00815430A CN1387640A CN 1387640 A CN1387640 A CN 1387640A CN 00815430 A CN00815430 A CN 00815430A CN 00815430 A CN00815430 A CN 00815430A CN 1387640 A CN1387640 A CN 1387640A
Authority
CN
China
Prior art keywords
instruction
byte
register
transfer
processor
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
CN00815430A
Other languages
English (en)
Other versions
CN1254739C (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 CN1387640A publication Critical patent/CN1387640A/zh
Application granted granted Critical
Publication of CN1254739C publication Critical patent/CN1254739C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Abstract

描述了诸如基于平行硬件的多线程处理器(12)之类的处理器。处理器(12)可以执行一条计算机指令,它就是转移指令,该转移指令基于指定字节等于或不等于寄存器(80,78,76b)中的字节,使处理器(12)中的指令序列确定寄存器(80,78,76b)中的字节是否等于或不等于包含在指令中的指定字节值,并执行由转移指令指定的转移操作。

Description

处理器结构的转移指令
                         背景
本发明涉及转移指令。
并行处理是在计算机处理中关于并发事件的信息处理的有效形式。并行处理要求在计算机处理中同时执行许多程序。顺序处理或串行处理使所有任务顺序地在单个工作站上执行,而流水线处理使任务在专用的工作站上执行。无论在并行处理机,流水线或顺序处理机上执行的计算机代码都涉及转移指令,其中指令流可以在一个序列中执行而从该序列转移到不同的指令序列。
                         附图简述
图1是使用处理器的通信系统框图。
图2是处理器的详细框图。
图3是图1和2的处理器中使用的微引擎的方框图。
图4是微引擎中的流水线图。
图5是转移指令的示例格式。
图6是通用寄存器的方框图。
                         描述
参考图1,通信系统10包括一处理器12。在一个实施例中,处理器是基于硬件的多线程处理器12。处理器12与一总线,例如PCI总线14、存储系统16和第二总线耦合。系统10对于能分解成平行的子任务或功能的各种任务特别有用。具体说基于硬件的多线程处理器12对于基于带宽而不是基于执行时间的任务是有用的。基于硬件的多线程处理器12有多个微引擎22,每个都具有硬件控制的线程,它们能同时激活并独立地执行任务。
基于硬件的多线程处理器12还包括一中央控制器20,帮助用于基于多线程处理器12的其它资源的加载微代码控制和执行其它通用目的的计算机类型功能,例如处理协议,意外事件、数据包处理的额外支持,其中微引擎传送该数据包以用于更详细的处理,例如边界条件。在一个实施例中,处理器20是基于Strory ArmR(Arm是英国ARM有限公司的商标)的结构。通用微处理器20有一操作系统。通过操作系统微处理器20可调用在微引擎22a-22f上操作的功能。处理器20可使用任何支持的操作系统,较佳的是实时操作系统。对于按Strory Arm结构实现的核心处理器,可使用诸如因特网上可获得的Microsoft NT实时操作系统、VXMork和口CUS,自由件操作系统。
基于硬件的多线程处理器12还包括多个功能微引擎22a-22f。功能性微引擎(微引擎)22a-22f中的每个都保持有多个硬件方式的程序计数器和与程序计算器相关的状态。实际上,在每个微引擎22a-22f上可同时有相应的多组线程在活动,然而在任何时刻仅只有一个线程实际在工作。
微引擎22a-22f每个都有能力处理4个硬件线程。微引擎22a-22f与包括存储器系统16和总线接口24和28的共享资源一起工作。存储器系统16包括同步动态随机访问存储器(SDRAM)控制器26a和静态随机访问存储器(SRAM)控制器26b。SDRAM存储器16a和SRAM控制器26a典型地用于处理大容量数据,例如处理来自网络数据包的网络有效负荷。SRAM控制器26b和SRAM存储器16b用于例如网络数据包处理,后文本处理器,或作为存储子系统,即RAID磁盘存储的处理器,或用于核心处理器20的低等待,快访问任务,例如访问查找表,存储器,等等。
处理器12包括将处理器与第二总线18耦合的总线接口28。总线28在一个实施例中把处理器12耦合到所谓FBUS(FIFO总线)。处理器12包括一第二接口,例如PCI总线接口24。它将驻存在PCI14总线上的其它系统元件耦合到处理器12。PCI总线接口24提供了一条到SDRAM存储器的高速数据通路24a。通过该通路数据可经直接存储器访问(DMA)传送器从SDRAM快速通过PCI总线14移动。
每个功能单元被耦合到一个或多个内部总线。内部总线是双32位总线(即一条总线用于读,另一条用于写)。基于硬件的多线程处理器还被构造成使得处理器12中的内部总线的带宽之和超过耦合到处理器12外部总线的带宽。处理器12包括一内部核心处理器总线32,例如ASB总线(Advanced SystemBus),如下所述它将内部处理器核心20耦合到存储器控制器26a、26c和到一个ASB转移器30。ASB总线是所谓AMBA总线的一个子集,AMBA总线与StrongArm处理器核心一起使用。处理器12还包括一个将微引擎单元与SRAM控制器26b、ASB转换器30和FBUS接口28耦合的专用总线34。存储器总线38将存储器控制器26a、26b与总线接口24和28以及包括用于启动操作的快闪只读存储器16c的存储器系统16等耦合。
参考图2,每个微引擎22a-22f包括一仲裁器,它检查标志以确定要工作的可用线程。任何来自微引擎22a-22f的线程可访问SDRAM控制器26a,SDRAM控制器26b或FBUS接口28。存储器控制器26a和26b中的每个都包括多个队列以存储待执行的存储器引用请求。FBUS接口28支持由MAC装置支持的每个端口的发送和接收标志,以及指示何时保证服务的中断标志。FBUS接口28还包括执行来自FBUS18的进入数据包的标头处理。控制器28a提取数据包标头并在SRAM中执行微可编程源/目标/协议的散列查找(用于地址平滑)。
核心处理器20访问该共享资源。核心处理器20通过总线32与到总线接口24的SDRAM控制器26a和SRAM控制器26b直接通信。然而,为了访问微引擎22a-22f和位于任何一个微引擎22a-22f中的转移寄存器,核心处理器20经总线34上的ASB转换器30访问微引擎22a-22f。ASB转换器30可物理上驻留在FBUS接口28中,但逻辑上可不同。ASB转换器30执行在FBUS微引擎转移寄存器位置和核心处理器地址(即ASB总线)间的地址转换使得核心处理器20能访问属于微引擎22a-22f的寄存器。
虽然微引擎22可如下所述使用寄存器组交换数据,但还是提供一便笺式高速缓冲存储器27,以允许微引擎写入数据到存储器以供其它微引擎读取。便笺式高速缓冲器存储器27耦合到总线34。
处理器核心20包括一由五级流水线实现的RISC核心50,在单个周期内执行一个操作数或二个操作数的单个周期移位,提供乘法支持和32位桶移位支持。这一RISC核心50是一标准Strong ArmR结构但出于性能理由它用五级流水线实现。处理器核心20还包括一16K字节的指令高速缓冲存储器52,一8K字节数据高速缓存储冲器54和一预提取流缓冲器56。核心处理器20与寄存器写和指令提取并行地执行算术操作。核心处理器20通过ARM定义的ASB总线与其它功能单元形成接口。ASB总线是32位双向总线32。
参照图3,一个示例微引擎22f包括一控制存储器70,它包括一个存储微程序的RAM。微程序可由核心处理器20加载。微引擎22f还包括控制器逻辑72。控制器逻辑包括一指令译码器73和程序计计数器(PC)单元72a-72d。四个微程序计数器72a-72d被保持在硬件中。微引擎22f还包括前后事件切换逻辑74。前后事件逻辑74接收来自每一个共享资源,例如SRAM26a,SRAM26b,或处理器IS20控制和状态寄存器等等的信息(例如,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具有相对大数目的通用寄存器,它们按如下所述被窗口化,使得它们能相对或绝对地被寻址。微引擎22f还包括一写转移器寄存器堆78和一读转移器寄存器堆80,这些寄存器也被窗口化使得它们能相对或绝对地被寻址。写转移器寄存器堆78是到资源的写数据所在地。类似地读转移器寄存器80是用于来自共享资源的返回数据。数据到达时或之后,来自各个共享资源,例如SRAM控制器26a,SDRAM控制器26b或核心处理器20的事件信号将被提供给前后事件仲裁器74,它随后将警示该线程数据可供使用或已被送出。两个转移寄存器组78和80通过数据通路与执行盒(EBOX)76相连。
参考图4,微引擎数据通路保持了一个5级微流水线82。这一流水线包括了微指令字82a的查找,寄存器文件地址82b的格式、从寄存器文件82c读取操作数、ALU、移位或比较操作82d、以及向寄存器82e写回结果。通过提供写回数据的旁通到ALU/移位器单元,并假设寄存器是用寄存器文件(而不是RAM)实现,微引擎可执行同步的寄存器文件读和写,这完全隐藏了写操作。
在微引擎22a-22f中被支持的指令集支持条件转移。最坏情况下的条件转移等待时间(不包括跳转)出现在转移判决是由先前微控制指令设定的条件码的结果时。等待时间如下表1所示:
                                           表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中被查找)。微引擎22f引起2个周期的转移延迟损失,因为在转移路经开始用操作b1填充流水管道前它必须终止流水管道中的操作n2和n3(直接在转移后的2个微字)。如果不采取该转移,无微字可被终止,执行将继续正常进行。微引擎具有若干机制来减小或消除有效的转移延迟等待。
微引擎支持可选的延期转移。可选的延期转移是在转移执行后并在转移生效之前微引擎允许1或2条微指令的时间(即转移生效被“延期”的时间)。因而,如果可找到有用的工作填入转移微字后浪费的周期中,则就可隐蔽转移延迟。1周延期转移示于下述表2中,其中允许在cb之后但在b1前执行n2:
                                  表2
                          |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周延迟转移示于表3,其中在出现转移到b1之前,允许完成n2和n3。注意当条件码在转移前的微字中被设置时只允许有2周的转移延期。
                                        表3
                                 |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周的转移,因为如表4所示可提前1周作出转移判决。
                                      表4
                               |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个周期的转移延迟。在表5的示例中1周的转移延迟和提前设置条件码被组合来完成隐蔽转移延迟。亦即,条件码(cc)在1周延迟转移前2周被设置。
                                   表5
                              |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周预先提取推测路经。如果推测正确,如表6所示1周的转移延迟被消除了。
                                         表6
                              推测转移被采取/转移被采取
                                   |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周,如表7所示。
                                     表7
                         推测转移被采取/转移不被采取
                            |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|
然而,当微码推测的转移未被采取时,延迟损失的分布不同。对于推测转移不采取/转移不采取,如图8所示没有浪费周期。
                             表8
                             |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|
然而,对于推测转移不采取/转移被采取,如表9所示有二个周期浪费。
                                     表9
                               |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周转移延迟相组合以进一步改进结果。对于推测转移采用有一周延期转移/转移被采取如表10所示。
                                      表10
                               |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周的转移延迟。
如果微码推测正确,如表11所示仍暴露了1周的转移延迟(推测转移采取1周延期转移/转移不采取)。
                            表11
                            |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|
如果微码正确地推测转移不被采取,则流水线以正常的未打扰情况顺序流动。如果微码不正确地推测转移未被采取,如表12所示微码再次暴露了有1周无成效的执行。
                               表12
                   推测转移未被采取/转移被采取
                        |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是终止微字
在跳转指令的情况下,因为在直到跳转所在的ALU级的周期结束前不知道转移地址,引起了3个周期的额外等待延迟(表13)。
                             表13
                                 |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|
参考图5,微引擎支持各种转移指令,诸如根据条件码转移的转移指令。此外,微引擎还支持根据一字节等于或不等于指定字节而转移的转移指令。根据字节的转移指令“BR=BYTE”包括一字节_说明字段。
BR=BYTE,  BR!=BYTE
如果在长字中的指定字节匹配或不匹配字节_比较_值,这一转移指令转移到指定标号处的指令。该br=byte指令预提取“转移采取”条件的指令而不是下一条件指令。br!=byte指令预提取下一顺序指令。这些指令设置了微引擎中的条件码。格式:
br=byte[reg,byte_spec,byte_compare_value,label#],optional_oken
br!=byte[reg,byte_spec,byte_compare_value,label#],optional_token
寄存器A是前后文相关转移寄存器或保持操作数的通用寄存器。字节说明数指定了寄存器中与字节_比较_值比较的一个字节。有效的字节说明值是0到3。0值指最右字节。
字节_比较_值是用于比较的值。有效的字节_比较_值是0到255。标号#是与指令地址对应的符号标号。字令还能包括任选项_标志。在该例子中任选项标志可被推迟一个值,该值将在执行转移操作前执行跟随在该转移指令前的一条指令。另一方面,任选项标志可被推迟二条指令。这允许用br!=byte指令实现并在执行转移操作前执行跟随在这一转移指令后的二条指令。另一方面任选项标志也可推迟三条指令,它允许用br!=byte指令实现并在执行转移操作前使处理器执行跟随在这一转移指令后的三条指令。
例子:br!=byte[reg,byte_spec,byte_compare_value,label#],defer[3]
这一指令表示一指令,该指令将寄存器操作数的对齐字节与立即的指定字节值比较。字节_说明参数表示要比较的对齐字节(0是最右字节,3是最左字节)。ALU条件码通过从指定寄存器字节减去指定值而设置。如果值匹配,采取指定的转移。有3周转移延迟与这一微码相关,既然条件码被计算出来,因而为了用有用的工作填充该等待延迟,允许有1、2和3的转移确定。寄存器可以是A或B组寄存器。
参照图6,存在二个寄存器地址空间是可被所有微引擎访问的局部可访问寄存器,和全局可访问寄存器。通用寄存器(GPR)实现为两个分开的组(A组和B组)它们的地址按逐字方式交织使得个A组寄存器有lsb=0,B寄存器lsb=1,每个组能够对各组中的二个不同字同时执行读和写。
跨越整个组A和B,寄存器组76b的32个寄存器还组织成四个窗口76b。一76b3,它们可由每个线程相对寻址。因而线程_0在77a处找到其寄存器_0(寄存器0),线程_1将在77b处找到其寄存器_0(寄存器32),线程_2将在77c处找到其寄存器_0(寄存器64),而线程_3在77d处找(寄存器96)。支持相对寻址使得多线程能使用完成相同的控制存储和位置,但访问不同的寄存器窗口并执行不同的功能。使用寄存器窗口寻址和分组寻址,便可在微引擎22f中仅使用双端口RAM,就可提供必不可少的读带宽。
这些窗口化的寄存器在从前后文切换到前后文切换的过程中不必保存数据,从而不必作前后文交换文件或堆栈的正常压入或弹出。前后文交换在这里从一个前后文文本改变为另一文本时有0周的附加开销。相对寄存器寻址将寄存器组整个通用寄存器组的地址宽度分成窗口。相对寻址允许相对于窗口起始点访问任何一个窗口。在该结构也支持绝对寻址,其中通过提供精确的寄存器地址,任何一个绝对寄存器均可被任何线程访问。
根据微字格式通用寄存器78的寻址可在2个模式中出现。这二个模式是绝对模式和相对模式。在绝对模式中,寄存器地址的寻址直接以7位源字段(a6-a0或b6-b0)指定,如下表14所示:
                        表14
                    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
寄存器地址直接以表15中8位目标字段(d7-d0)指定,见表15:
                             表15
                             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仍使用该全地址空间。
在相对模式中,对指定地址的寻址是在前后文空间中用表16中的5位源字段(a4-a0或b4-b0)定义的偏置见表16:
                         表16
                 7 6 5 4 3 2 1 0
                 +…+…+…+…+…+…+…+…+
    A GPR:   |a4|0|前后文|a3|a2|a1|a0|       a4=0
    B GPR:   |b7|1|前后文|b3|b2|b1|b0|       b4=0
    SRAM/ASB:|ab4|0|ab3|前后文|b2|b1|ab0|    ab4=1,ab3=0
    SDRAM:   |ab4|0|ab3|前后文|b2|b1|ab0|    ab4=1,ab3=1
或用6位目标字段(d5-d0)定义的偏置,见表17:
                        表17
                    7 6 5 4 3 2 1 0
                +…+…+…+…+…+…+…+…+
    A GPR:   |d5|d4|前后文|d3|d2|d1|d0|  d5=0,d4=0
    B GPR:   |d5|d4|前后文|d3|d2|d1|d0|  d5=0,d4=1
    SRAM/ASB:|d5|d4|d3|前后文|d2|d1|d0|  d5=1,d4=0,d3=0
    SDRAM:   |d5|d4|d3|前后文|d2|d1|d0|  d5=1,d4=0,d3=1
如果<d5:d4>=1,1,则目标地址不寻址到一有效寄存器,因而,没有操作数被写回。
其它实施例是处在所附权利要求书范围内。

Claims (21)

1.一种计算机指令,其特征在于,它包括:
一转移指令,基于寄存器中的一字节等于或不等于指定字节值,所述指定字节是否与该字节值匹配或不匹配,而使处理器从执行第一指令顺序系列转移到不同的指令顺序系列。
2.如权利要求1所述的指令,其特征在于,所述转移是转移到在指定标号处的一条指令。
3.如权利要求1所述的指令,其特征在于,所述转移指令包括:
一位_位置字段,指定了包含在寄存器中的长字中的字节。
4.如权利要求1所述的指令,其特征在于,所述转移指令包括:
一任选项标志,它由程序员设置并指定了在执行转移前要转移的跟随在该转移指令后的指令数目i。
5.如权利要求1所述的指令,其特征在于,所述转移指令包括:
一任选项标志,它由程序员设置并指定了在执行转移前要转移的跟随在该转移指令后的指令数目i,其中指令数目可以被指定为1,2或3。
6.如权利要求1所述的指令,其特征在于,所述寄存器是前后文相关的转移寄存器或保持所述操作数的通用寄存器。
7.如权利要求1所述的指令,其特征在于,所述转移指令包括:
由程序员设置的任选项标志,并且它指定了对于“转移采取”条件的指令的推测_转移预提取而不是下一顺序指令。
8.如权利要求1所述的指令,其特征在于,所述转移指令进一步包括;
由程序员设置的一任选项标志,指定了在执行转移操作前要执行的跟随在该转移指令后的指令数目i;以及
由程序员设置的第二任选项标志,并且它指定了对于“转移采取”条件的指令的推测_转移预提取而不是下一顺序指令。
9.如权利要求1所述的指令,其特征在于,所述转移指令允许程序员选择使用寄存器的哪一位来确定转移操作。
10.如权利要求1所述的指令,其特征在于,所述转移指令允许基于对处理器的数据通路中的一字节所作的计算而发生转移。
11.如权利要求1所述的指令,其特征在于,所述转移指令基于匹配所述字节值的一个字节而转移,并且所述指令预提取用于“转移采取”条件的指令。
12.如权利要求1所述的指令,其特征在于,所述转移指令基于不匹配所述字节值的一个字节而转移,并且所述指令预提取下一顺序指令。
13.如权利要求1所述的指令,其特征在于,所述转移指令包括一字节_说明号,该字节_说明号指定了寄存器中要与字节_比较_值比较的字节。
14.一种驻存在计算机可读媒体上的、用于使执行多重前后文文本的处理器完成一功能的计算机程序产品,其特征在于,包括的指令使处理器:
提取存储在寄存器中的一字节;
确定寄存器中的该字节是否等于或不等于包含在该指令中的指定的字节值;以及
基于所述指定的字节等于或不等于寄存器中的该字节进行由所述转移指令指定的转移操作。
15.如权利要求14所述的产品,其特征在于,所述转移是到指定标号处的一条指令。
16.如权利要求14所述的产品,其特征在于,所述程序包括一条转移指令,该转移指令包括:
一位_位置字段,指定了包含在寄存器中的长字中的字节。
17.一种处理器,其特征在于,包括:
一寄存器堆;
一与寄存器堆耦合的算术逻辑单元,以及存储转移指令的程序控制存储器,所述转移指令使处理器:
提取存储在寄存器中的一字节;
确定寄存器中的该字节是否等于或不等于包含在该指令中的指定的字节值;以及
基于所述指定的字节等于或不等于寄存器中的该字节进行由所述转移指令指定的转移操作。
18.如权利要求17所述的处理器,其特征在于,所述执行转移的指令转移到指定标号处的一条指令。
19.如权利要求1所述的处理器,其特征在于,指令中的位_位置字段指定了包含在寄存器中的长字中的该字节。
20.一种操作处理器的方法,其特征在于,包括:
提取存储在寄存器中的一字节;
确定寄存器中的该字节是否等于或不等于包含在该指令中的指定的字节值;以及
基于所述指定的字节等于或不等于寄存器中的该字节进行由所述转移指令指定的转移操作。
21.如权利要求20所述的方法,其特征在于,执行所述转移便转移到指定标号处的一条指令。
CNB008154309A 1999-09-01 2000-08-31 处理器和操作处理器的方法 Expired - Fee Related CN1254739C (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
CN1387640A true CN1387640A (zh) 2002-12-25
CN1254739C CN1254739C (zh) 2006-05-03

Family

ID=22540994

Family Applications (7)

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

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CNB008144966A Expired - Fee Related CN100474236C (zh) 1999-09-01 2000-08-31 多线程并行处理器及其维持线程执行的方法

Family Applications After (5)

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

Country Status (10)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110045988A (zh) * 2012-12-28 2019-07-23 英特尔公司 具有共享前端单元的处理核

Families Citing this family (38)

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

Family Cites Families (140)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110045988A (zh) * 2012-12-28 2019-07-23 英特尔公司 具有共享前端单元的处理核
CN110045988B (zh) * 2012-12-28 2023-08-15 英特尔公司 具有共享前端单元的处理核

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1254739C (zh) 处理器和操作处理器的方法
CN1185592C (zh) 并行处理器结构
CN1387641A (zh) 并行处理器中的多线程执行
CN1192314C (zh) 并行处理器结构的sram控制器
CN1387644A (zh) 并行处理器体系结构的sdram控制器
JP6124463B2 (ja) 一方のアーキテクチャのコードモジュールが他方のアーキテクチャのライブラリモジュールを用いることを可能にするインターアーキテクチャ互換性モジュール
CN1174313C (zh) 多指令集的数据处理
CN1742257A (zh) 基于识别寻址模式的双目的寄存器的数据预测机制
CN1881183A (zh) 信息处理装置、进程控制方法及其计算机程序
CN1758213A (zh) 带有共享内容的异构型并行多线程处理器(hpmt)
CN1243311C (zh) 实现重叠操作的方法和系统
CN1291325C (zh) 通过源/目的转换机构实现高速存储器克隆的方法和系统
CN1181550A (zh) 微处理机及多处理机系统
CN1236455A (zh) 具有risc结构的八位微控制器
CN1504902A (zh) 在存储器部件之间保持数据一致性的方法和系统
CN1940860A (zh) 多微控制器系统任务调用方法
CN1044354A (zh) 指令执行高效率生产线方法及装置
CN1821953A (zh) 可变群组组合分支目标地址快取传送每一快取列多目标地址
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
CN1109978C (zh) 信息处理设备和方法,及调度装置
CN100339825C (zh) 将多余的分支目标地址高速缓存项目无效化的装置及方法
US11593115B2 (en) Processor, device, and method for executing instructions
US9710389B2 (en) Method and apparatus for memory aliasing detection in an out-of-order instruction execution platform
CN1504904A (zh) 存储器克隆操作期间保护高速缓冲存储器线的方法和系统
CN1282930C (zh) 有效更新分支目标地址高速缓存的装置与方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
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: 20060503

Termination date: 20160831