CN1387641A - 并行处理器中的多线程执行 - Google Patents
并行处理器中的多线程执行 Download PDFInfo
- Publication number
- CN1387641A CN1387641A CN00815246A CN00815246A CN1387641A CN 1387641 A CN1387641 A CN 1387641A CN 00815246 A CN00815246 A CN 00815246A CN 00815246 A CN00815246 A CN 00815246A CN 1387641 A CN1387641 A CN 1387641A
- Authority
- CN
- China
- Prior art keywords
- micro
- micro engine
- memory
- control unit
- transfer register
- 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
Links
- 230000015654 memory Effects 0.000 claims abstract description 133
- 230000006870 function Effects 0.000 claims abstract description 26
- 238000003860 storage Methods 0.000 claims description 41
- 238000012546 transfer Methods 0.000 claims description 40
- 230000004044 response Effects 0.000 claims description 7
- 238000005192 partition Methods 0.000 claims 1
- 230000015572 biosynthetic process Effects 0.000 description 24
- 238000005755 formation reaction Methods 0.000 description 24
- 238000012545 processing Methods 0.000 description 20
- 238000000034 method Methods 0.000 description 17
- 238000005457 optimization Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000009183 running Effects 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 7
- 238000012163 sequencing technique Methods 0.000 description 6
- 230000011664 signaling Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000011282 treatment Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 2
- 230000005059 dormancy Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- LHMQDVIHBXWNII-UHFFFAOYSA-N 3-amino-4-methoxy-n-phenylbenzamide Chemical compound C1=C(N)C(OC)=CC=C1C(=O)NC1=CC=CC=C1 LHMQDVIHBXWNII-UHFFFAOYSA-N 0.000 description 1
- QNXAVFXEJCPCJO-UHFFFAOYSA-N Diclosulam Chemical compound N=1N2C(OCC)=NC(F)=CC2=NC=1S(=O)(=O)NC1=C(Cl)C=CC=C1Cl QNXAVFXEJCPCJO-UHFFFAOYSA-N 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 230000004060 metabolic process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 230000002787 reinforcement Effects 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 230000002463 transducing effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
- G06F9/30127—Register windows
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
Abstract
说明一并行、基于硬件的多线程处理器。该处理器包括一协调系统功能的通用处理器和支持多硬件线程的多个微引擎。该处理器还包含一具有第1存储控制器和第2存储控制器的存储器控制系统,第1存储控制器根据存储器指针是指向偶数存储组还是指向奇数存储组对存储器指针分类,第2存储控制器则根据存储器指针是读指针还是写指针对存储器指针优化。
Description
背景技术
本发明涉及一种并行处理器。
并行处理是计算处理中对并发事件进行信息处理的有效形式。并行处理需要计算机中同时执行许多程序,与串行处理不同。并行处理器的环境中,并行处理涉及在同一时间做多件事。与单一站串行执行全部任务的串行范例或专门站执行任务的流水机不同,并行处理配备多个站,每个站能够执行全部任务。也就是说,全部站或多个站对问题的相同或共同要素通常进行同时且独立的工作。某些问题适合用并行处理解决。
因此,计算机处理类型包括单指令流单数据流处理,常规的串行方式的冯·诺依曼型计算机中存在单一指令流。第2种处理类型是单指令流多数据流处理(SIMD)。这种处理可有多重算术逻辑处理器和单个控制处理器。每一处理器按锁定步骤对数据执行操作。这些处理器由控制处理器同步。第3种类型是多指令流单数据流(MISD)处理。这种处理具有流经执行不同指令流的处理器线性阵列的相同数据流。第4种是多指令流多数据流(MIMD)处理。这种处理采用多个处理器,每一处理器执行其本身的指令流以处理供给各处理器的数据流。多指令流多数据流(MIMD)处理器可具有若干指令处理单元,进而可具有若干数据流。
发明概述
根据本发明的一个方面,经过微控制的功能执行单元包括一存储微程序的控制存储器和一保持多个微程序计数器的微引擎控制器。该单元还包括一对指令进行译码的译码逻辑和一环境事件仲裁器,该仲裁器响应外部标志,判断微控制功能执行单元可执行的多个线程中哪一个升级到执行状态。
本发明的一个或多个方面可提供以下一个或多个优点。
微引擎可处理多硬件线程。每一微引擎保持多个硬件形式的程序计数器和与该程序计数器相关联的状态。实际上,相应的多个线程组可在一微引擎上同时工作,但任何时仅有一个线程真正运作。硬件环境对换使任务完成同步。举例来说,2个线程可试图存取相同共用资源。资源完成一个微引擎线程环境所请求的任务时,该资源便回报一通知操作完成的标志。微引擎收到该标志时,便可判定开通哪一线程。
硬件多线程处理可用于使微引擎上的第1线程启动例如存取存储器这种事务。存储器存取期间,若微引擎例如仅具有一个可运作的线程,该微引擎就会休眠直到从存储器返回数据为止。通过在微引擎内利用硬件环境对换,该硬件环境对换使具有独行程序计数器的其他环境能在相同微引擎中执行。因此,第1线程等待存储器送回读出数据的同时,可执行另一线程。这些特征可扩展到微引擎中同时工作的多个线程,以便在数据通路中处理更多工作。
附图简要说明
图1是采用基于硬件的多线程处理器的通信系统的框图。
图2是图1中基于硬件的多线程处理器的具体框图。
图3是图1和图2中基于硬件的多线程处理器所用的微引擎功能单元的框图。
图3A是图3中微引擎流水线的框图。
图3B是表示环境切换指令格式的示意图。
图3C是表示通用寄存器地址安排的框图。
图4是基于硬件的多线程处理器中所用的强化带宽操作用存储控制器的框图。
图4A是表示图4中SDRAM控制器的仲裁策略的流程图。
图4B是说明对SDRAM控制器进行优化的好处的时序图。
图5是基于硬件的多线程处理器中所用的等待时间有限的操作用存储控制器的框图。
图5A是表示对SRAM控制器进行优化的好处的时序图。
图6是图1中处理器的通信总线接口的框图。
说明
体系结构
参照图1,通信系统10包括一并行、基于硬件的多线程处理器12。该基于硬件的多线程处理器12与诸如PCI总线14这种总线、存储器系统16和第二总线18连接。系统10对可分解为并行子任务或功能的任务尤其有用。具体来说,硬件多线程处理器12对那些面向带宽的任务而非面向等待时间的任务有用。硬件多线程处理器12具有多重微引擎22,分别配备可对一任务同时作用和独立工作的多重硬件控制的线程。
硬件多线程处理器12还包括一中央控制器20,该控制器有助于对硬件多线程处理器12的其他资源加载微码控制,并执行其他通用计算机类型功能,诸如处理协议、异常以及微引擎在边界状态等条件下传出数据分组进行更为细节处理场合对分组处理的额外支持。一实施例中,处理器20是一基于StrongArm(Arm是英国Arm有限公司的商标)的体系结构。通用微处理器20具有一操作系统。通过该操作系统,处理器20可调用功能在微引擎22a~22f上操作。处理器20可利用任何得到支持的操作系统,最好用实时操作系统。对按Strong Arm结构实现的核心处理器来说,可用诸如微软NT实时、VXWorks和μCUS这种操作系统和可从互联网得到的免费件操作系统。
硬件多线程处理器12还包含多个功能微引擎22a~22f。这些功能微引擎(微引擎)22a~22f分别在硬件及其关联状态方面保持多个程序计数器。实际上,各微引擎22a~22f中可同时使相应的多组线程工作,而任何时候仅一个真正操作。
一实施例中,存在6个微引擎22a~22f,如图所示,每一微引擎22a~22f能处理4个硬件线程。6个微引擎22a~22f以包括存储器系统16以及总线接口24和28在内的共用资源进行工作。存储器系统16包含同步动态随机存取存储器(SDRAM)的控制器26a和静态随机存取存储器(SRAM)的控制器26b。SDRAM存储器16a和SDRAM控制器26a通常用于处理大量数据,例如处理来自网络数据分组的网络有效负载。SRAM控制器26b和SRAM存储器16b在网络实施例当中实现较小等待时间、迅速存取任务,例如存取查找表、核心处理器20的存储器等。
6个微引擎22a~22f根据数据特性存取SDRAM16a或SRAM16b。因此,对SRAM存入并读取短等待时间且小带宽的数据,而对SDRAM则存入并读取等待时间不重要的大带宽数据。微引擎22a~22f可对SDRAM控制器26a或SRAM控制器26b执行存储器指针指令。
可通过SRAM或SDRAM的存储器存取说明硬件多线程的优点。举例来说,一线程0所请求的微引擎对SRAM的存取会使SRAM控制器26b启动对SRAM存储器16b的存取。SRAM控制器控制对SRAM总线的仲裁,对SRAM16进行存取,从SRAM16b读取数据,并使数据返回至提出请求的微引擎22a-22b。SRAM存取期间,若微引擎(例如22a)仅具有一个可运作的线程,该微引擎会休眠直到从SRAM返回数据。通过采用每一微引擎22a~22f内的硬件环境对换,该硬件环境对换能使具有独特程序计数器的其他环境在该相同微引擎中执行。因此,第一线程(例如线程0)等待所读出数据返回的同时,另一线程例如线程1可起作用。执行期间,线程1可存取SDRAM存储器16a。线程1在SDRAM单元上运作,线程0在SRAM单元上运作的同时,新线程例如线程2可在微引擎22a中现场运作。线程2可运作一些时间直到该线程需要存取存储器或执行某些其他长等待时间操作,诸如对总线接口进行存取。因此,处理器12可同时使总线运作、SRAM运作和SDRAM运作均得到完成,或由一个微引擎22a在其上运作,全部完成或正在工作的总线操作、SRAM操作和SDRAM操作,并且使另一个线程可用于处理数据通路中更多的工作。
硬件环境对换还使任务完成同步。举例来说,2个线程会同时命中相同的共用资源例如SRAM。诸如FBUS(F总线)接口28、SRAM控制器26a和SDRAM26b等每一个独立功能单元当其完成其中一个微引擎线程环境所请求的任务时,便回报一通知完成运作的标志。微引擎收到该标志,便能判断开通哪一线程。
利用硬件多线程处理器的一个例子是用作网络处理器。作为网络处理器,硬件多线程处理器12作为与诸如媒体存取控制器(例如10/100BaseT8进制MAC13a或千兆位以太网13b)这种网络装置的接口。通常作为一网络处理器,硬件多线程处理器12可作为与任何类型通信设备的接口或收发大量数据的接口。在联网应用中起作用的通信系统10可从设备13a和13b接收多个网络数据分组,以并行方式处理这些数据分组。可采用硬件多线程处理器12独立处理各网络数据分组。
处理器12的另一应用例是一附录处理器用打印引擎或作为存储子系统(即RAID磁盘存储器)的处理器。再一应用是作为配对引擎。举例来说,在证券业中,电子交易的出现要求用电子配对引擎来搓合买方和卖方的报单。可在系统10上完成上述和其他并行任务。
处理器12包括一将该处理器与第2总线18连接的总线接口28。一实施例中,总线接口28将处理器12与所谓的FBUS18(FIFO总线)连接。FBUS接口28负责控制处理器12和形成该处理器与FBUS18的接口。FBUS18是64位宽的FIFO总线,用于形成与媒体存取控制器(MAC)设备的接口。
处理器12包括一第二接口(例如PCI总线接口24),该接口将驻留PCI总线14上的其他系统组成部分与处理器12连接。PCI总线接口24提供一至存储器16(例如SDRAM存储器16a)的高速数据通路24a。通过该通路,数据可从SDRAM16a通过直接存储器存取(DMA)的传送经PCI总线14转移。硬件多线程处理器12支持图像传送。硬件多线程处理器12能用多个DMA通道,因而若DMA传送的一个目标忙,另一DMA通道便可接管PCI总线对另一目标传送信息,以维持处理器12高效。此外,PCI总线接口还支持目标和主机操作。目标操作是总线14上的从属装置通过对该操作起从属作用的读和写存取SDRAM场合的操作。主机操作中,处理器核心20直接对PCI接口24收、发数据。
每一功能单元连接1条或多条内部总线。下文将说明,内部总线是32位的双总线(即1条总线用于读,另1条用于写)。硬件多线程处理器12结构上还做成处理器12中内部总线带宽之和大于处理器12所接外部总线的带宽。处理器12包含内部核心处理器总线,例如ASB总线(高级系统总线:Advancedsystem Bus),该总线将处理器核心接到存储控制器26a、26b和ASB译码器30,后文将说明。ASB总线是配合Strong Arm处理器核心用的所谓AMBA总线的子集。处理器12还包含将微引擎单元接到SRAM控制器26b、ASB变换器30和FBUS接口28的专用总线34。存储器总线38将存储控制器26a、26b接到总线接口24、28和包含用于引导操作等的快速擦写ROM16c的存储器系统16。
参照图2,每一微引擎22a~22f包含仲裁器,检查标志以判定可提供的工作线程。来自任一微引擎22a~22f的任何线程都可访问SDRAM控制器26a、SRAM控制器26b或FBUS接口28。存储控制器26a和26b分别包含多个队列,以存放待处理的存储器指针请求。这些队列保持存储器指针的次序或者安排存储器指针来优化存储器带宽。举例来说,若线程0相对线程1独立或者无关,线程1和0便没有理由无法不按顺序完成其存储器指针指向SRAM单元。微引擎22a~22f对存储控制器26a和26b发布存储器指针请求。微引擎22a~22f以足够的存储器指针操作充满存储器子系统26a和26b,使得该存储器子系统26a和26b成为处理器12运作的瓶颈。
若存储器子系统16充满本质上独立的存储器请求,处理器12便可进行存储器指针分类。该存储器指针分类改善能达到的存储器带宽。如下文所述,存储器指针分类减少存取SRAM时所出现的空载时间或空泡。通过存储器指针指向SRAM,在读写之间对信号线电流方向的切换,产生等待SRAM16b与SRAM控制器26b连接的导体上的电流稳定的空泡或空载时间。
也就是说,在总线上驱动电流的驱动器需要在状态变化前稳定。因此,读后接着写的重复周期会使峰值带宽下降。存储器指针分类允许组织指针指向存储器,使得长串的读出后面接着长串的写入。这可用于使流水线的空载时间最少,以有效达到接近最大可用带宽。指针分类有助于保持并行硬件环境线程。对于SDRAM,指针分类使一存储组对另一存储组可隐藏预充电。具体而言,若存储器系统166组织成奇数存储组和偶数存储组,而处理器在奇数存储组上工作,存储控制器便可在偶数存储组启动预充电。若存储器指针在奇数和偶数存储组之间交替变化,便可预充电。通过安排存储器指针的顺序交替访问相对存储组,处理器12改善SDRAM的带宽。此外,还可采用其他优化。举例来说,可采用可归并的运作在存储器存取前归并场合的归并优化、通过检查地址不重新打开存储器开放页面场合的开放页面优化、将在下面说明的链接以及刷新机制。
FBUS接口28支持MAC装置所支持的各端口用的收和发标志,还支持表明业务何时得到保证的中断标志。FBUS接口28还包含对来自FBUS18的输入数据组首部进行处理的控制器28a。控制器28a提取该分组的首部,并且在SRAM中进行可微编程源/宿/协议散列查找(用于地址平滑)。如果散列未成功分辨,将分组首部送到处理器核心20进行附加处理。FBUS接口28支持下列内部数据事务:
FBUS单元 (共用总线SRAM) 至/来自微引擎
FBUS单元 (经专用总线) 从SDRAM单元写入
FBUS单元 (经MBUS) 读出至SDRAM
FBUS18是标准业界总线,其中包含例如64位宽的数据总线、地址边带控制和读/写控制。FBUS接口28能用一系列输入输出FIFO29a~29b输入大量数据。微引擎22a~22f从FIFO29a~29b取得数据,命令SDRAM控制器26a将来自己从总线18上的装置得到数据的接收FIFO的数据移入FBUS接口28。该数据可通过存储控制器26a,经直接存储器存取送到SDRAM存储器16a。同样,微引擎能将从SDRAM26a至接口28的数据经FBUS接口28移出到FBUS18。
在微引擎之间分配数据功能。经由命令请求连接SRAM26a、SDRAM26b和FBUS28。命令请求可以是存储器请求或FBUS请求。例如,命令请求能将数据从位于微引擎22a的寄存器移到共用资源,例如移到SDRAM位置、SRAM位置、快速擦写存储器或某MAC地址。这些命令送出到每一功能单元和共用资源。然而,共用资源不需要保持数据的局部缓存。反之,共用资源存取位于微引擎内部的分布数据。这使微引擎22a~22f可局部存取数据,而不是对总线上存取的仲裁,冒争用总线的风险。利用此特征,等待数据内部到达微引擎22a~22f的阻塞周期为0。
连接这些资源(例如存储控制器26a和26b)的例如ASB总线30、SRAM总线34和SDRAM总线38等数据总线具有足够的带宽,使得无内部阻塞。因此,为了避免阻塞,处理器12具有每一功能单元配备内部总线最大带宽至少2倍的带宽要求。例如,SDRAM可以83MHz运作于64位宽总线。SRAM数据总线可具有读写分开的总线,例如可以是运作于166MHz的32位宽读出总线和运作于166MHz的32位宽写入总线。也就是说,运作于166Mhz的64位实际上是SDRAM带宽的2倍。
核心处理器20也可存取共用资源。核心处理器20经总线32直接与SDRAM控制器26a、总线接口24和SRAM控制器26b通信。然而,为了访问微引擎22a~22f和任一微引擎22a~22f的传送寄存器,核心处理器24经ASB变换器30在总线34上存取微引擎22a~22f。ASB变换器30可在实体上驻留于FBUS接口28,但逻辑上不同。ASB变换器30进行FBUS微引擎传送寄存器位置与核心处理器地址(即ASB总线)之间的地址变换,以便核心处理器20能访问属于微引擎22a~22c的寄存器。
虽然如下文所述微引擎22可用寄存器组交换数据,但还提供便笺存储器27,使微引擎能将数据写到该存储器,供其他微引擎读取。便笺式存储器27连接总线34。
处理器核心20包含在5级流水线实现的RISC核心50,该流水线进行在单个周期内对1个操作数或2个操作数的单周期移位,提供乘法支持和32位滚筒型移位支持。此RISC核心50具有标准Strong Arm体系结构,但由于性能上的原因,用5级流水线实现。处理器核心20还包含16K字节指令快速缓存器52、8K字节数据快速缓存器54和预读取流缓存器56。核心处理器20执行与存储器写入和指令读取并行的算术运算。核心处理器20经ARM规定的ASB总线与其他功能单元形成接口。ASB总线是32位双向总线32。
微引擎
参照图3,示出微引擎22a~22f中一示范例,例如微引擎22f。微引擎包含控制存储器70,在一实施例中该存储器包含这里达1024字(每字32位)的RAM。该RAM存储一微程序。该微程序可由核心处理器20加载。微引擎22f还包含控制器逻辑72。该控制器逻辑包含指令译码器73和程序计数器(PC)单元72a~72d。按硬件维持4个微程序计数器72a~72d。微引擎2f还包含环境事件切换逻辑74。该环境事件逻辑74从例如SRAM26a、SDRAM26b或处理器核心20、控制及状态寄存器等共用资源的每一个接收消息(例如:序号#事件响应SEQ_#_EVENT_RESPONSE、FBI事件响应FBI_EVENT_RESPONSE、SRAM事件响应SRAM_EVENT_RESPONSE、SDRAM事件响应SDRAM_EVENT_RESPONSE和ASB事件响应ASB_EVENT_RESPONSE)。这些消息提供有关请求的功能是否完成的信息。根据线程请求的功能是否完成和信号传送是否完成,线程需要等待该完成信号,如果线程能工作,便将该线程放到可用线程列表(未示出)。微引擎22a可具有最多例如4个可用线程。除执行线程局部所有的事件信号外,微引擎22还用全局的信令状态。借助该信令状态,执行线程可对全部微引擎22广播信号状态。接收请求可行信号后,微引擎中的全部任何线程可按这些信令状态分支。可用这些信令状态判定资源的可用性或资源提供服务是否适当。
环境事件逻辑74具有对4个线程的仲裁。一实施例中,仲裁是一循环机制。可用包括优先级排队或加权合理排队在内的其他技术。微引擎22f还包括一执行框(EBOX)数据通路76,其中包含算术逻辑单元76a和通用寄存器组76b。算术逻辑单元76a执行算术和逻辑功能以及移位功能。寄存器组76b具有数量较多的通用寄存器。图3B中将说明,此实施例中,第1组(组A)具有64个通用寄存器,第2组(组B)也具有64个。这些通用寄存器形成窗口(后文将说明),以便其可相对寻址和绝对寻址。
微引擎22f还包含写传送寄存器堆栈78和读传送堆栈80。这些寄存器也形成窗口,以便其可相对寻址和绝对寻址。资源的写入数据位于写传送寄存器堆栈78。读寄存器堆栈80则用于从共用资源返回的数据。分别来自例如SRAM控制器26a、SDRAM控制器26b或核心处理器20之类共用资源的事件信号,与数据的到达串行或并行提供给环境事件仲裁器74,提醒线程数据可用或数据已发送。传送寄存器组78和80都通过数据通路连接执行框(EBOX)76。一实施例中,读传送寄存器具有64个寄存器,写传送寄存器也有64个。
如图3A所示,微引擎数据通路维持5级微流水线82。该流水线包含查找微指令字82a、形成寄存器文件地址82b、从寄存器文件读操作数82c、ALU或移位或比较运算82d和结果写回寄存器82e。通过提供回写数据旁路至ALU/移位器单元,假定按寄存器文件而非RAM实现寄存器,微引擎可执行寄存器文件同时读写,完全隐藏写操作。
SDRAM接口26a在读数据上对提出请求的微引擎送回一表明是否在读请求上出现奇偶差错的信号。微引擎采用任何送回的数据时,微引擎的微码负责校验SDRAM读奇偶标志。校验该标志时,如果设定该标志,分支动作将其消除。仅在启用SDRAM供校验时发送奇偶标志,SDRAM受奇偶性防护。微引擎和PCI单元是通知奇偶差错的唯一请求者。因此,如果处理器核心20或FIFO要求奇偶性保护,微引擎就按请求帮助。微引擎22a~22f支持条件分支。分支判决结果是先前微控制指令设定条件码时,出现条件分支执行时间(不包含转移)最坏的情况。表1示出该等待时间如下:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|
寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|
ALU/shifter/cc | | | |n1|cb|XX|XX|b1|
写回 | | |m2| |n1|cb|XX|XX|
其中,
nx是预分支微字(n1设定为cc)
cb是条件转移
bx是后分支微字
xx是异常微字
如表1所示,直到周期4才设定条件码n1,能进行分支判决,这在本例中使用周期5上查找分支路径。微引擎由于必须在分支路径用操作b1填充流水线前吸收流水线中操作n2和n3(紧接分支后的2个微字),带来2个周期的分支等待时间损失。如果不进行分支,就不吸收微字,按常规继续执行。微引擎有若干机制用于减少或消除有效分支等待时间。
微引擎支持延迟分支。延迟分支是微引擎允许在分支后实施分支前出现1个或2个微字的情况(即分支作用在时间上“延迟”)。因此,如果能找到有用的工作填补分支微字后所浪费的周期,就能隐去分支等待时间。下面示出延迟1周期的分支,其中允许在cb后、b1前执行n2:
|1|2|3|4|5|6|7|8|
-------------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|cb|n2|XX|b1|b2|b3|
寄存器文件查找 | | |n1|cb|n2|XX|b1|b2|
ALU/shifter/cc | | | |n1|cb|n2|XX|b1|
写回 | | | | |n1|cb|n2|XX|
下面示出2周期的延迟分支,其中n2和n3都允许在分支到b1出现前完成。注意,仅分支前在微字设定条件码时,允许2周期分支延迟。
|1|2|3|4|5|6|7|8|9|
------------------+----+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|n3|b1|b2|b3|b4|b5|
寄存器地址生成 | |n1|cb|n2|n3|b1|b2|b3|b4|
寄存器文件查找 | | |n1|cb|n2|n3|b1|b2|b3|
ALU/shifter/cc | | | |n1|cb|n2|n3|b1|b2|
写回 | | | | |n1|cb|n2|n3|b1|
微引擎也支持条件码估值。如果分支前判决分支的条件码设定2个或多个微字,则由于能早1周期进行分支判决,能消除1周期的等待时间如下:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|n2|cb|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|n2|cb|XX|b1|b2|b3|
寄存器文件查找 | | |n1|n2|cb|XX|b1|b2|
ALU/shifter/cc | | | |n1|n2|cb|XX|b1|
写回 | | | | |n1|n2|cb|XX|
此例中,n1设定条件码,n2不设定条件码。因此,可在周期4而不是周期5进行分支判决,以消除1周期的分支等待时间。下面的例子中,将1周期延迟与条件码提早设定加以组合,以完全隐去分支等待时间:
|1|2|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周期延迟分支前的2周期设定条件码cc。
在不能提前设定条件码的情况下(即条件码设定在分支前的微字中时),微引擎支持试图减少1周期留下的暴露分支等待时间的分支猜测。通过“猜测”分支路径或串行路径,微定序器在确切知道执行何路径前预先取得猜测路径1。猜测如果正确,就消除1周期分支等待时间如下:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n1|b1|b2|b3|b4|b5|
寄存器地址生成 | |n1|cb|XX|b1|b2|b3|b4|
寄存器文件查找 | | |n1|cb|XX|b1|b2|b3|
ALU/shifter/cc | | | |n1|cb|XX|b1|b2|
写回 | | | | |n1|cb|XX|b1|
其中猜测进行分支而且也进行分支。如果微码猜测进行的分支不正确,微引擎仍然浪费1周期:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n1|XX|n2|n3|n4|n5|
寄存器地址生成 | |n1|cb|n1|XX|n2|n3|n4|
寄存器文件查找 | | |n1|cb|n1|XX|n2|n3|
ALU/shifter/cc | | | |n1|cb|n1|XX|n2|
写回 | | | | |n1|cb|n1|XX|
其中猜测进行分支但不进行分支。
然而,微码猜测不进行分支时,有差异地分配等待时间损失。
对猜测不进行分支而且也不进行分支而言,不存在浪费周期,如下所示:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n1|n2|n3|n4|n5|n6|
寄存器地址生成 | |n1|cb|n1|n2|n3|n4|n5|
寄存器文件查找 | | |n1|cb|n1|n2|n1|b4|
ALU/shifter/cc | | | |n1|cb|n1|n2|n3|
写回 | | | | |n1|cb|n1|n2|
然而,对猜测不进行分支但进行分支而言,存在2个浪费周期如下:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n1|XX|b1|b2|b3|b4|
寄存器地址生成 | |n1|cb|XX|XX|b1|b2|b3|
寄存器文件查找 | | |n1|cb|XX|XX|b1|b2|
ALU/shifter/cc | | | |n1|cb|XX|XX|b1|
写回 | | | | |n1|cb|XX|XX|
微引擎可组合分支猜测和1周期分支延迟,以进一步改善结果。对猜测进行分支加上1周期延迟分支而且也进行分支而言,其结果为:
|1|2|3|4|5|6|7|8|
---------------+----+----+----+----+----+----+----+----+
微存储查找 |n1|cb|n2|b1|b2|b3|b4|b5|
寄存器地址生成 | |n1|cb|n2|b1|b2|b3|b4|
寄存器文件查找 | | |n1|cb|n2|b1|b2|b3|
ALU/shifter/cc | | | |n1|cb|n2|b1|b2|
写回 | | | | |n1|cb|n2|b1|
上述情况下,通过执行n2和正确猜测分支方向,隐去2周期分支等待时间。如果微码猜测不正确,仍暴露1周期等待时间如下:
|1|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周期非生产性执行如下:
|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个额外周期的等待时间如下:
|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|
环境切换
参照图3B,其中示出环境切换指令的格式。环境切换是促使选择不同环境(及其相关联PC)的特殊分支形式。环境切换也引入一些分支等待时间。考虑以下的环境切换:
|1|2|3|4|5|6|7|8|9|
---------------+----+----+----+----+----+----+----+----+----+
微存储查找 |o1|ca|br|n1|n2|n3|n4|n5|n6|
寄存器地址生成 | |o1|ca|XX|n1|n2|n3|n4|n5|
寄存器文件查找 | | |o1|ca|XX|n1|n2|n3|n4|
ALU/shifter/cc | | | |o1|ca|XX|n1|n2|n3|
写回 | | | | |o1|ca|XX|n1|n2|
其中,
ox是旧环境流
br是旧环境中分支微字
ca是环境再仲裁(致使环境切换)
nx是新环境流
XX是异常微字
环境切换中,致使“br”微字异常,以避免保留正确旧环境PC会造成的控制和定时复杂性。
按照分支前在微字上设定的ALU条件码操作的条件分支可选择0、1或2周期分支延迟模式。所有其他分支(包括环境再仲裁)可选择0或1周期分支延迟模式。可设计体系结构使环境仲裁微字在前置分支的分支延迟窗内、转移或使该微字为非法任选项。也就是说,某些实施例中,由于如上所述原因,其会造成保存旧环境PC过度复杂,流水线中分支转换时不允许发生环境切换。还可设计体系结构,使在前置分支的分支延迟窗内的分支、转换或者环境仲裁微字非法,以免分支行为复杂且不可预测。
每一微引擎22a~22f支持4个环境的多线程执行。其原因之一是使1个线程可正好在另一线程发布存储器指针后开始执行,并且必须等待直到该指针完成后才进行更多工作。由于存储器等待时间显著,此性能对维持微引擎硬件有效执行至关重要。换句话说,若仅支持一个线程执行,微引擎就会闲置大量周期,等待指针返回,从而使总的计算吞吐量减少。多线程执行通过跨越多个线程执行有用的独立工作,使微引擎可隐去存储器等待时间。提供2种同步机制,以便使线程可发布SRAM或SDRAM指针,并且在完成该访问时,接着与下一个时间点同步。
一种机制是立即同步。立即同步中,微引擎发布指针,并且立即换出该环境。相应的指针完成时便发信号通知该环境。一旦发信号,便换回环境,以便当出现环境对换事件且轮到其运作时执行。因此,从单一环境指令流的角度看,微字在发出存储器指针后要到指针完成才得以执行。
第2种机制是延迟同步。延迟同步中,微引擎发布指针后,继续执行一些其他与指针无关的有用工作。过些时间,变成需要线程执行流与所发布指针的完成同步后再进一步工作。这时,执行同步微字,换出当前线程,并且在过一些时间完成指针时将其换回,或者由于已经完成指针而继续执行当前线程。用以下2种不同信令方案实现延迟同步。
若存储器指针与传送寄存器关联,在设定或消除相应传送寄存器有效位时便产生触发线程的信号。举例来说,设定寄存器A有效位时,便发出在传送寄存器A中存数据这种SRAM读出的信号。若存储器指针与传送FIFO或接收FIFO关联,而不是与传送寄存器关联,在SDRAM控制器26a中完成访问时产生信号。微引擎调度器中仅保持每一环境一种信号状态,因而此方案中只能存在一个待处理信号。
至少有2种可设计微控制器微程序的一般操作范例。一种是优化总体的微控制器计算吞吐量和总体的存储器带宽,其代价是花费一个线程执行等待时间。当系统具有对非相关数据分组执行每一微引擎多线程的多重微引擎时,此范例会有意义。
第2种范例是以总体的微引擎计算吞吐量和总体存储器带宽的代价来优化微引擎执行等待时间。此范例涉及以实时约束执行线程,该约束支配按某规定时间必须绝对完成的某工作。这种约束要求给单一线程执行的优化比诸如存储器带宽或总体计算吞吐量之类其他考虑高的优先级。实时线程隐含仅执行一个线程的单一微引擎。目标是使单一实施线程尽快执行,而多线程的执行妨碍此性能,所以不处理多线程。
在发布存储器指针和环境切换方面,这2种范例的编码方式显著不同。在实时情况下,目标是尽快发布尽量多的存储器指针,以便使这些指针所带来的存储器等待时间最短。已尽量提早发布尽量多的指针,目标是微引擎与指针尽可能并行执行尽量多的计算。与实时优化时相对应的计算流是:
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的控制器提供均匀的存储器指针流,并且使总可获得一线程的概率最大,以隐去换出另一线程时带来的存储器等待时间。
寄存器文件地址类型
参照图3C,所存在的2个寄存器地址空间是局部可存取寄存器和全部微引擎均可存取的全局可存取寄存器。通用寄存器(GRP)做成2个分开组(A组和B组),其地址逐字交错,使得A组寄存器具有LSB=0,B组寄存器具有LSB=1。每组可进行本组内2个不同字的同时读写。
整个组A和组B上,寄存器集合76b也组织成每一线程具有可相对寻址的32个寄存器的4个窗76b0~76b3。因此,线程0在77a(寄存器0)找到其寄存器0,线程1在77b(寄存器32)找到其寄存器0,线程2在77c(寄存器64)找到其寄存器0,线程3在77d(寄存器96)找到其寄存器0。支持相对寻址,以便多线程能准确使用相同的控制存储器和位置,但访问不同的宁寄存器窗,并执行不同功能。寄存器窗寻址和寄存器组寻址的使用,仅在以微引擎22f中以双端口RAMS提供必要的读带宽。
这些开窗的寄存器不需要保存环境切换之间的数据,从而消除环境对换文件或堆栈的常规推入和推出。这里环境切换对从一环境到另一环境的变化具有0周期的开销。相对寄存器寻址将寄存器组划分成跨越通用寄存器集合地址宽度的窗。相对寻址允许访问相对于窗起始点的任何窗。此体系结构内也支持绝对寻址,其中,通过提供寄存器的准确地址,任何线程可访问任一绝对寄存器。
通用寄存器48的寻址可出现2种方式,取决于微字格式。这2种方式是绝对方式和相对方式。绝对方式中,在7位源段(a6~a0或b6~b0)直接指定寄存器地址的寻址:
7 6 5 4 3 2 1 0
+…+…+…+…+…+…+…+…+
A GPR: |a6|0|a5|a4|a3|a2|a1|a0| a6=0
B GPR: |b6|1|b5|b4|b3|b2|b1|b0| b6=0
SRAM/ASB:|a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=0
SDRAM: |a6|a5|a4|0|a3|a2|a1|a0| a6=1,a5=0,a4=1
在8位宿段(d7~d0)直接指定寄存器地址:
7 6 5 4 3 2 1 0
+…+…+…+…+…+…+…+…+
A GPR: |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=0
B GPR: |d7|d6|d5|d4|d3|d2|d1|d0| d7=0,d6=1
SRAM/ASB:|d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=0
SDRAM: |d7|d6|d5|d4|d3|d2|d1|d0| d7=1,d6=0,d5=1
若<a6:a5>=1,1,<b6:b5>=1,1或<d7:d6>=1,1,低端位便变换成环境相对地址字段(下文说明)。当A、B绝对字段指定非相对A或B源地址时,仅能对SRAM/ASB和SDRAM地址空间的低端半部分寻址。实际上,读绝对方式的SRAM/SDRAM具有有效地址空间。但由于该限制不适用宿段,写SRAM/SDRAM可用全地址空间。
相对方式中,在按5位源段(a4~a0或b4~b0)规定的环境空间内偏置指定地址的寻址:
7 6 5 4 3 2 1 0
+…+…+…+…+…+…+…+…+
A GPR: |a4|0|环境|a2|a1|a0| a4=0
B GPR: |b7|1|环境|b2|b1|b0| b4=0
SRAM/ASB:|ab4|0|ab3|环境|b1|ab0| ab4=1,ab3=0
SDRAM: |ab4|0|ab3|环境|b1|ab0| ab4=1,ab3=1
或者在按6位宿段(d5~d0)规定的环境空间内偏置指定地址的寻址:
7 6 5 4 3 2 1 0
+…+…+…+…+…+…+…+…+
A GPR: |d5|d4|环境d2|d1|d0| d5=0,d4=0
B GPR: |d5|d4|环境|d2|d1|d0| d5=0,d4=1
SRAM/ASB:|d5|d4|d3|环境|d1|d0| d5=1,d4=0,d3=0
SDRAM: |d5|d4|d3|环境|d1|d0| d5=1,d4=0,d3=1
如果<d5:d4>=1,1,则宿地址找不到有效寄存器,因而不回写宿操作数。
从微引擎和存储控制器可全局存取以下寄存器:
散列单元寄存器
便笺和共用寄存器
接收FIFO和接收状态FIFO
发送FIFO
发送控制FIFO
不中断驱动微引擎。执行每一微流直到完成为止,根据处理器12中其他装置用信号通知的状态选择一新流。
参照图4,SDRAM存储控制器26a包含存储器指针队列90,其中存储器指针请求从各微引擎22a~22f到达。存储控制器26a包括一仲裁器91,该仲裁器选择下一微引擎指针请求至任何功能单元。设一个微引擎提出访问请求,该请求会来到SDRAM控制器26a内部的地址和命令队列90。若该访问请求具有称为“经优化存储位”的位集合,便将进入的指针请求分类为偶数组队列90a或奇数组队列90b。若存储器指针请求没有存储器优化位集合,系统设定就转入一排序队列90c。SDRAM控制器26是一FBUS接口28、核心处理器20和PCI接口24所共用的资源。SDRAM控制器26还维持一用于执行读出-修改-写入自动操作的状态机。SDRAM控制器26还对SDRAM的数据请求进行字节对准。
命令队列90c保持来自微引擎的指针请求的排序。根据一系列奇数和偶数组指针,可要求信号仅在指向偶数组和奇数组两者的存储器指针序列完成时返回信号。若微引擎22f将存储器指针分类成奇数组指针和偶数组指针,并且存储器指针在奇数组前漏出其中一个组(例如偶数组),但在最后的偶数指针上信号肯定,便可想象存储控制器26a可返回信号通知微引擎已完成存储器请求,即使奇数组指针不提供服务也这样。这种现象可造成一相干问题。通过提供排序队列90c使微引擎可让多个待处理存储器指针中仅最后的存储器指针通知完成,从而可避免上述情况。
SDRAM控制器26a还包含高优先级队列90d。高优先级队列90d中,来自一个微引擎的输入存储器指针直接进入高优先级队列,并且以高于其他队列中其他存储器指针的优先级进行工作。偶数组队列90a、奇数组队列90b、命令队列90c和高优先级队列90d,所有这些队列都在一个RAM结构中实现。该结构逻辑上分成4个不同的窗,各窗分别具有其本身首部和尾部指针。由于填入和漏出操作仅是单一输入和单一输出,可将它们置于同一RAM结构以提高RAM结构密度。
SDRAM控制器26a还包括核心总线接口逻辑即ASB总线92。ASB总线接口逻辑92形成核心处理器20与SDRAM控制器26a的接口。ASB总线是一包含32位数据通路和28位地址通路的总线。通过MEM ASB数据设备98(例如缓存器)对存储器存取数据。MEM ASB数据设备98是一写数据队列。若有从核心处理器20经ASB接口92进入的数据,该数据可存入MEM ASB设备98,接着通过SDRAM接口110从MEM ASB设备98移至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实际上是2条分开的总线,而不是单一总线。该分开的总线会包含连接分布式微引擎22a~22f的读出总线和连接分布式微引擎22a~22f的写入总线。
SDRAM控制器26a其特征在于,在队列90中存储存储器指针时,除可设定该经优化存储位外,还有“链接位”。该链接位当其设定时允许对邻接存储器指针专门处理。如上文所述,仲裁器12控制选择哪一微引擎在命令总线上将存储器指针请求提供给队列90(图4)。对链接位的肯定将控制仲裁器使之选择先前请求该总线的功能单元,这是因为对链接位的设定表明微引擎发出一链接请求。
设定链接位时,会按队列90接收邻接存储器指针。由于邻接存储器指针是来自单一线程的多存储器指针,这些邻接指针通常按排序队列90c存储。为了提供同步,存储控制器26a仅需要在完成时在链接存储器指针未端给出信号。但经优化存储器链接中,(例如经优化存储位和链接位设定时)存储器指针便会进入不同组,并且在其他组充分露出前有可能对发布信号“完成”的其中一个存储组完成,这样就破坏相干性。因此,控制器110用链接位保持来自当前队列的存储器指针。
参照图4A,示出SDRAM控制器26a中仲裁策略的流程表示。仲裁策略优待链接微引擎存储器请求。处理过程115通过链接微引擎存储器指针请求的检查115a开始进行。过程115停留于链接请求,直到使链接位清零。过程对后面接着PCI总线请求115c、高优先级队列业务115d、相对组请求115e、排序队列请求115f和相同组请求115g的ASB总线请求115b进行检查。对链接请求提供完整的业务,而对业务115b~115d则按循环顺序提供。仅当业务115a~115d完全漏出时,该过程才进行业务115e~115g的处理。当先前SDRAM存储器请求对链接位设定时,设定所链接的微引擎存储器指针请求。当设定链接位时,仲裁引擎便再次仅对相同队列服务,直到链接位清零。ASB处于等待状态时对Strong Arm核心带来严重性能损失,故ASB优先级高于PCI。因为PCI的等待时间要求,PCI优先级高于微引擎。但就其他总线而言,该仲裁优先级可能不同。
如图4B所示,示出的是不具有有效存储器优化和具有有效存储器优化的典型存储器定时。可以知道,对有效存储器优化的利用使总线应用程度最大,从而隐去实际SDRAM装置内固有的等待时间。本例中,非优化存取可用14周期,而优化存取则可用7周期。
参照图5,其中示出SRAM的存储控制器26b。该存储控制器26b包括一地址及命令队列120。存储控制器26a(图4)具有一基于奇数和偶数分组的存储器优化队列,存储控制器26b则根据存储器操作类型(即读出或写入)优化。地址及命令队列120包括一高优先级队列120a、一作为SRAM执行的主导存储器指针功能的读队列120b、以及一通常包括要非优化的全部SRAM读写的排序队列120c。尽管未图示,地址及命令队列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,接着通过SRAM接口140从MEM ASB设备128移至SRAM存储器16b。虽未图示,但可提供相同的队列结构用于读出。SRAM控制器26b还包括一引擎127从微引擎和PCI总线拉进数据。
存储器请求经复用器126送至SDRAM接口140。复用器126由SDRAM仲裁器131控制,该仲裁器检测各队列满员程度和请求状态,并根据优先级业务控制寄存器130存放的可编程值,从所检测的情况判定优先级。一旦对复用器126的控制选择一存储器指针请求,就将此存储器指针请求送至一译码器138对其进行译码,并生成一地址。SRAM单元保持对经存储器映射的离片SRAM和扩展ROM的控制。SRAM控制器26b可对例如16M字节寻址,而例如用于SRAM16b的8M字节映射保留用于专用功能,其中包括通过快速擦写ROM16的引导空间;MAC器件13a、13b用的控制台端口存取访问;以及对关联(RMON)计数器的存取。SRAM用于局部查找表和队列管理功能。
SRAM控制器26b支持下列事务:
微引擎请求 (经专用总线) 至/自SRAM
核心处理器 (经ASB总线) 至/自SRAM。
SRAM控制器26b进行存储器指针分类以使SRAM接口140至存储器16b的流水线中延迟(空泡)最少。SRAM控制器26b根据读功能进行存储器指针分类。一个空泡可以是1周期或者2周期,取决于所用存储器件的类型。
SRAM控制器26b包括一锁定查找器件142,是一8输入项地址内容可寻址存储器用于对读出锁定的查找。每一位置包括一由后续读出-锁定请求检查的有效位。地址及命令队列120还包括一读出锁定失效队列120d。该队列120d用于保持因存储器一部分存在锁定而失效的读存储器指针请求。也就是说,其中一个微引擎所发布的存储器请求所具有的读出锁定请求在地址及控制队列120中处理。该存储器请求将对排序队列120c或读队列120b运作,并将其识别为读出锁定请求。控制器26b将存取锁定查找器件142以判断该存储位置是否已经锁定。若此存储位置根据任何先前的读出锁定请求而被锁定,该存储锁定请求将失效,并将存入读出锁定失效队列120d。若解锁或者142表示该地址未锁定,SRAM接口140就将用该存储器指针的地址对存储器16b进行常规的SRAM地址读/写请求。命令控制器及地址发生器138也会将该锁定输入锁定查找器件142,以便后续读出锁定请求将发现该存储位置被锁定。锁定需要结束后通过对程序中微控制指令的运作来使存储位置解锁。通过对CAM中有效位清零将该位置解锁。解锁后,读出锁定失效队列120d变成最高优先级队列,给丢失的全部排队的读出锁定一次机会发出一存储器锁定请求。
如图5A所示,示出的是没有有效存储器优化和具有有效存储器优化的静态随机存取存储器的典型时序。可以知道,分组读写改善消除死周期的周期时间。
参照图6,示出的是微引擎22和FBUS接口逻辑(FBI)之间的通信。网络应用中的FBUS接口28可对来自FBUS18的来向数据分组进行首部处理。FBUS接口28所进行的一项关键功能是对数据分组首部的提取和对SRAM中可微编程源/宿/协议散列查找。若该散列不能成功分辨,数据分组首部就提升至核心处理器28用于更为高级的处理。
FBI 28包含发送FIFO 182、接收FIFO 183、散列单元188以及FBI控制及状态寄存器189。这4个单元通过对微引擎中与传送寄存器78、80连接的SRAM总线28的时间复用存取与微引擎22通信。也就是说,全部对微引擎的收发通信都通过传送寄存器78、80。FBUS接口28包括一用于在SRAM不用SRAM数据总线(部分总线38)的时间周期期间将数据推入传送寄存器的推状态机200以及一用于从相应微引擎中的传送寄存器当中读取数据的拉状态机202。
散列单元包括一对FIFO 18a、188b。该散列单元判定FBI 28收到一FBI散列请求。散列单元188从进行调用的微引擎22当中取得散列键。读取该键并散列后,将索引号送回进行调用的微引擎22。在单个FBI散列请求下,进行多达3次散列。总线34和38均为单向:SDRAM推/拉数据总线以及S总线推/拉数据总线。上述总线每一条需要对适当微引擎22的传送寄存器提供读/写控制的控制信号。
传送寄存器通常要求保护其环境控制以保证读出的正确性。具体来说,若线程1用写传送寄存器对SDRAM 16a提供数据,线程1必须等到SDRAM控制器16a返回的信号表明该寄存器已提升并可重新使用才重写此寄存器。每次写均不需要表明已经完成该功能的目的地所返回的信号,其原因在于若该线程用多个请求对该目的地的相同命令队列写入,该命令队列内确保完成命令,因而仅最后的命令需要将信号传回该线程。但若该线程采用多个命令队列(排序和读出),这些命令请求就必需分解成独立的环境任务,以便通过环境对换保持排序。本节开头提出的特例涉及对FBUS状态信息采用FBI至传送寄存器的非请求型推(PUSH)的某类操作。为了保护传送寄存器的读/写判定,FBI当设定这些专用FBI推操作时提供一专用的推保护信号。
采用FBI非请求型推方法的任何微引擎22必须在存取传送寄存器同意的FBUS接口/微引擎前测试该保护标志。若该标志并非肯定,该微引擎便可存取传送寄存器。若该标志肯定,则存取寄存器前环境应等待N周期。根据所推的传送寄存器个数加上前端保护窗,确定先验的此计数。基本思想是,微引擎必须测试此标志,然后以连续周期快速将希望从所读传送寄存器读出的数据移到GPR,因而推引擎不与微引擎读出冲突。
其他实施例
应理解,虽然结合详细说明描述了本发明,但上述描述用于说明,并非限定本发明范围,该范围由所附权利要求的范围限定。其他方而、优点和修改均在以下权利要求书范围内。
Claims (12)
1.一种微控制功能执行单元,其特征在于,包括:
一存储微程序的控制存储器;
一保持多个微程序计数器和对指令进行译码的译码逻辑的微引擎控制器;
一环境事件仲裁器,响应外部标志,判断微控制功能执行单元可执行的多个线程中哪一个升级到执行状态。
2.如权利要求1所述的微控制单元,其特征在于,还包括一受到对控制存储器中所存储微程序的执行控制的执行单元。
3.如权利要求2所述的微控制单元,其特征在于,执行框包括:
一受到微引擎控制器所产生的译码信号控制的算术逻辑单元和移位器;以及
一存储并取得算术逻辑单元用操作数的通用寄存器组。
4.如权利要求3所述的微控制单元,其特征在于,通用寄存器组划分成至少2个可独立寻址的组。
5.如权利要求4所述的微控制单元,其特征在于,通用寄存器组划分成与微引擎控制器中所支持的微程序计数器个数相对应的多个窗口。
6.如权利要求1所述的微控制单元,其特征在于,微引擎控制器包括:
对可在经微控制单元上执行的每一线程所保持的多个程序计数器。
7.如权利要求1所述的微控制单元,其特征在于,微引擎控制器包括:
译码器从控制存储器接收微码指令,并提供控制信号以控制微控制单元中指令的执行。
8.如权利要求1所述的微控制单元,其特征在于,事件仲裁器响应对表明存储器事件已完成的标志的肯定。
9.如权利要求1所述的微控制单元,其特征在于,还包括:
一读传送寄存器组,以及
一写传送寄存器组,其中读传送寄存器组和写传送寄存器组划分成与与微引擎控制器中所支持的微程序计数器个数相对应的多个窗口。
10.如权利要求1所述的微控制单元,其特征在于,还包括:
一读传送寄存器组,以及
一写传送寄存器组,其中读传送寄存器组和写传送寄存器组划分成分配给微引擎控制器中不同共用资源的多个组。
11.如权利要求3所述的微控制单元,其特征在于,执行框安排成流水线,并包括:
保持流水线中即时需要的操作数的操作数旁路逻辑。
12.如权利要求1所述的微控制单元,其特征在于,还包括:
一存储并取得操作数的通用寄存器集,该通用寄存器集划分成2个可独立寻址的组,每一寄存器组逻辑分区为与微引擎控制器中所支持的微程序计数器个数相对应的多个窗口;
一读传送寄存器集;以及
一写传送寄存器集,其中读传送寄存器集和写传送寄存器集划分成2组和与微引擎控制器中所支持的微程序计数器个数相对应的多个窗口。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/387,046 US6668317B1 (en) | 1999-08-31 | 1999-08-31 | Microengine for parallel processor architecture |
US08/387,046 | 1999-08-31 | ||
US09/387,046 | 1999-08-31 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710180338XA Division CN101221493B (zh) | 1999-08-31 | 2000-08-17 | 用于并行处理的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1387641A true CN1387641A (zh) | 2002-12-25 |
CN100378655C CN100378655C (zh) | 2008-04-02 |
Family
ID=23528223
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710180338XA Expired - Fee Related CN101221493B (zh) | 1999-08-31 | 2000-08-17 | 用于并行处理的方法和设备 |
CNB008152462A Expired - Fee Related CN100378655C (zh) | 1999-08-31 | 2000-08-17 | 并行处理器中的多线程执行 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710180338XA Expired - Fee Related CN101221493B (zh) | 1999-08-31 | 2000-08-17 | 用于并行处理的方法和设备 |
Country Status (9)
Country | Link |
---|---|
US (2) | US6668317B1 (zh) |
EP (1) | EP1221086B1 (zh) |
CN (2) | CN101221493B (zh) |
AT (1) | ATE269988T1 (zh) |
AU (1) | AU7061600A (zh) |
CA (1) | CA2383384A1 (zh) |
DE (1) | DE60011797T2 (zh) |
HK (1) | HK1049719B (zh) |
WO (1) | WO2001016718A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1801775A (zh) * | 2004-12-13 | 2006-07-12 | 英特尔公司 | 流分配 |
CN1306404C (zh) * | 2003-04-24 | 2007-03-21 | 国际商业机器公司 | 多线程处理器在单线程与并发多线程模式之间的动态切换的装置与方法 |
CN101847106A (zh) * | 2009-02-20 | 2010-09-29 | 株式会社日立制作所 | 基于多处理器的数据包处理装置以及数据包处理方法 |
CN103200048A (zh) * | 2013-04-02 | 2013-07-10 | 中兴通讯股份有限公司 | 一种网络处理器异常检测方法、装置及网络处理设备 |
CN104011681A (zh) * | 2012-01-06 | 2014-08-27 | 国际商业机器公司 | 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息 |
CN104581172A (zh) * | 2014-12-08 | 2015-04-29 | 北京中星微电子有限公司 | 一种实现svc宏块级算法的硬件结构 |
CN109525443A (zh) * | 2018-12-29 | 2019-03-26 | 广州供电局有限公司 | 分布式前置采集通讯链路的处理方法、装置和计算机设备 |
CN111079904A (zh) * | 2019-12-23 | 2020-04-28 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法、存储介质及应用 |
Families Citing this family (117)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030095967A1 (en) * | 1999-01-25 | 2003-05-22 | Mackay Fabienne | BAFF, inhibitors thereof and their use in the modulation of B-cell response and treatment of autoimmune disorders |
US6983350B1 (en) * | 1999-08-31 | 2006-01-03 | Intel Corporation | SDRAM controller for parallel processor architecture |
US6606704B1 (en) * | 1999-08-31 | 2003-08-12 | Intel Corporation | Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US7512724B1 (en) * | 1999-11-19 | 2009-03-31 | The United States Of America As Represented By The Secretary Of The Navy | Multi-thread peripheral processing using dedicated peripheral bus |
US6532509B1 (en) | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6631430B1 (en) * | 1999-12-28 | 2003-10-07 | Intel Corporation | Optimizations to receive packet status from fifo bus |
US6661794B1 (en) | 1999-12-29 | 2003-12-09 | Intel Corporation | Method and apparatus for gigabit packet assignment for multithreaded packet processing |
US7480706B1 (en) * | 1999-12-30 | 2009-01-20 | Intel Corporation | Multi-threaded round-robin receive for fast network port |
US6952824B1 (en) * | 1999-12-30 | 2005-10-04 | Intel Corporation | Multi-threaded sequenced receive for fast network port stream of packets |
US6823473B2 (en) * | 2000-04-19 | 2004-11-23 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor uncached load address comparator and data value replication circuit |
US6854075B2 (en) * | 2000-04-19 | 2005-02-08 | Hewlett-Packard Development Company, L.P. | Simultaneous and redundantly threaded processor store instruction comparator |
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 |
US20020053017A1 (en) * | 2000-09-01 | 2002-05-02 | Adiletta Matthew J. | Register instructions for a multithreaded processor |
US7131125B2 (en) * | 2000-12-22 | 2006-10-31 | Nortel Networks Limited | Method and system for sharing a computer resource between instruction threads of a multi-threaded process |
US7233998B2 (en) | 2001-03-22 | 2007-06-19 | Sony Computer Entertainment Inc. | Computer architecture and software cells for broadband networks |
US7231500B2 (en) * | 2001-03-22 | 2007-06-12 | Sony Computer Entertainment Inc. | External data interface in a computer architecture for broadband networks |
US7516334B2 (en) * | 2001-03-22 | 2009-04-07 | Sony Computer Entertainment Inc. | Power management for processing modules |
US7093104B2 (en) * | 2001-03-22 | 2006-08-15 | Sony Computer Entertainment Inc. | Processing modules for computer architecture for broadband networks |
US6526491B2 (en) * | 2001-03-22 | 2003-02-25 | Sony Corporation Entertainment Inc. | Memory protection system and method for computer architecture for broadband networks |
US7216204B2 (en) * | 2001-08-27 | 2007-05-08 | Intel Corporation | Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment |
US7225281B2 (en) * | 2001-08-27 | 2007-05-29 | Intel Corporation | Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms |
US6868476B2 (en) * | 2001-08-27 | 2005-03-15 | Intel Corporation | Software controlled content addressable memory in a general purpose execution datapath |
IL160997A0 (en) * | 2001-09-19 | 2004-08-31 | Bay Microsystems Inc | Vertical instruction and data processing in a network processor architecture |
US7126952B2 (en) * | 2001-09-28 | 2006-10-24 | Intel Corporation | Multiprotocol decapsulation/encapsulation control structure and packet protocol conversion method |
US7107413B2 (en) * | 2001-12-17 | 2006-09-12 | Intel Corporation | Write queue descriptor count instruction for high speed queuing |
US7895239B2 (en) | 2002-01-04 | 2011-02-22 | Intel Corporation | Queue arrays in network devices |
US6934951B2 (en) * | 2002-01-17 | 2005-08-23 | Intel Corporation | Parallel processor with functional pipeline providing programming engines by supporting multiple contexts and critical section |
US7437724B2 (en) * | 2002-04-03 | 2008-10-14 | Intel Corporation | Registers for data transfers |
CN1316355C (zh) | 2002-05-24 | 2007-05-16 | 皇家飞利浦电子股份有限公司 | 可配置处理器 |
US7471688B2 (en) * | 2002-06-18 | 2008-12-30 | Intel Corporation | Scheduling system for transmission of cells to ATM virtual circuits and DSL ports |
US8015303B2 (en) | 2002-08-02 | 2011-09-06 | Astute Networks Inc. | High data rate stateful protocol processing |
US7248584B2 (en) * | 2002-08-07 | 2007-07-24 | Intel Corporation | Network packet processing |
US7124196B2 (en) * | 2002-08-07 | 2006-10-17 | Intel Corporation | Processing a network packet using queues |
US7596621B1 (en) * | 2002-10-17 | 2009-09-29 | Astute Networks, Inc. | System and method for managing shared state using multiple programmed processors |
US8151278B1 (en) | 2002-10-17 | 2012-04-03 | Astute Networks, Inc. | System and method for timer management in a stateful protocol processing system |
US7814218B1 (en) | 2002-10-17 | 2010-10-12 | Astute Networks, Inc. | Multi-protocol and multi-format stateful processing |
US7433307B2 (en) * | 2002-11-05 | 2008-10-07 | Intel Corporation | Flow control in a network environment |
US20050108479A1 (en) * | 2003-11-06 | 2005-05-19 | Sridhar Lakshmanamurthy | Servicing engine cache requests |
US20050102474A1 (en) * | 2003-11-06 | 2005-05-12 | Sridhar Lakshmanamurthy | Dynamically caching engine instructions |
US7536692B2 (en) | 2003-11-06 | 2009-05-19 | Intel Corporation | Thread-based engine cache partitioning |
US7213099B2 (en) * | 2003-12-30 | 2007-05-01 | Intel Corporation | Method and apparatus utilizing non-uniformly distributed DRAM configurations and to detect in-range memory address matches |
JP2005276165A (ja) * | 2004-02-27 | 2005-10-06 | Sony Corp | 情報処理装置、ネットワークシステム状況呈示方法およびコンピュータプログラム |
JP4586526B2 (ja) | 2004-02-27 | 2010-11-24 | ソニー株式会社 | 情報処理装置、情報処理方法、情報処理システムおよび情報処理用プログラム |
US7181568B2 (en) * | 2004-03-25 | 2007-02-20 | Intel Corporation | Content addressable memory to identify subtag matches |
US20050216655A1 (en) * | 2004-03-25 | 2005-09-29 | Rosenbluth Mark B | Content addressable memory constructed from random access memory |
US8224639B2 (en) | 2004-03-29 | 2012-07-17 | Sony Computer Entertainment Inc. | Methods and apparatus for achieving thermal management using processing task scheduling |
US7478198B2 (en) * | 2004-05-24 | 2009-01-13 | Intel Corporation | Multithreaded clustered microarchitecture with dynamic back-end assignment |
US7178005B1 (en) | 2004-06-30 | 2007-02-13 | Sun Microsystems, Inc. | Efficient implementation of timers in a multithreaded processor |
US7370243B1 (en) | 2004-06-30 | 2008-05-06 | Sun Microsystems, Inc. | Precise error handling in a fine grain multithreaded multicore processor |
US7216216B1 (en) | 2004-06-30 | 2007-05-08 | Sun Microsystems, Inc. | Register window management using first pipeline to change current window and second pipeline to read operand from old window and write operand to new window |
US7343474B1 (en) | 2004-06-30 | 2008-03-11 | Sun Microsystems, Inc. | Minimal address state in a fine grain multithreaded processor |
US7941642B1 (en) | 2004-06-30 | 2011-05-10 | Oracle America, Inc. | Method for selecting between divide instructions associated with respective threads in a multi-threaded processor |
US7747771B1 (en) | 2004-06-30 | 2010-06-29 | Oracle America, Inc. | Register access protocol in a multihreaded multi-core processor |
US7383403B1 (en) | 2004-06-30 | 2008-06-03 | Sun Microsystems, Inc. | Concurrent bypass to instruction buffers in a fine grain multithreaded processor |
US7523330B2 (en) * | 2004-06-30 | 2009-04-21 | Sun Microsystems, Inc. | Thread-based clock enabling in a multi-threaded processor |
US7434000B1 (en) | 2004-06-30 | 2008-10-07 | Sun Microsystems, Inc. | Handling duplicate cache misses in a multithreaded/multi-core processor |
US7861063B1 (en) | 2004-06-30 | 2010-12-28 | Oracle America, Inc. | Delay slot handling in a processor |
US7478225B1 (en) | 2004-06-30 | 2009-01-13 | Sun Microsystems, Inc. | Apparatus and method to support pipelining of differing-latency instructions in a multithreaded processor |
US7353364B1 (en) | 2004-06-30 | 2008-04-01 | Sun Microsystems, Inc. | Apparatus and method for sharing a functional unit execution resource among a plurality of functional units |
US7676655B2 (en) * | 2004-06-30 | 2010-03-09 | Sun Microsystems, Inc. | Single bit control of threads in a multithreaded multicore processor |
US7890734B2 (en) * | 2004-06-30 | 2011-02-15 | Open Computing Trust I & II | Mechanism for selecting instructions for execution in a multithreaded processor |
US7401206B2 (en) * | 2004-06-30 | 2008-07-15 | Sun Microsystems, Inc. | Apparatus and method for fine-grained multithreading in a multipipelined processor core |
US8095778B1 (en) | 2004-06-30 | 2012-01-10 | Open Computing Trust I & II | Method and system for sharing functional units of a multithreaded processor |
US7426630B1 (en) | 2004-06-30 | 2008-09-16 | Sun Microsystems, Inc. | Arbitration of window swap operations |
US7330988B2 (en) * | 2004-06-30 | 2008-02-12 | Sun Microsystems, Inc. | Method and apparatus for power throttling in a multi-thread processor |
US7702887B1 (en) | 2004-06-30 | 2010-04-20 | Sun Microsystems, Inc. | Performance instrumentation in a fine grain multithreaded multicore processor |
US7437538B1 (en) | 2004-06-30 | 2008-10-14 | Sun Microsystems, Inc. | Apparatus and method for reducing execution latency of floating point operations having special case operands |
US7373489B1 (en) | 2004-06-30 | 2008-05-13 | Sun Microsystems, Inc. | Apparatus and method for floating-point exception prediction and recovery |
US7774393B1 (en) | 2004-06-30 | 2010-08-10 | Oracle America, Inc. | Apparatus and method for integer to floating-point format conversion |
US8225034B1 (en) | 2004-06-30 | 2012-07-17 | Oracle America, Inc. | Hybrid instruction buffer |
US7185178B1 (en) | 2004-06-30 | 2007-02-27 | Sun Microsystems, Inc. | Fetch speculation in a multithreaded processor |
US7533248B1 (en) * | 2004-06-30 | 2009-05-12 | Sun Microsystems, Inc. | Multithreaded processor including a functional unit shared between multiple requestors and arbitration therefor |
US7895431B2 (en) * | 2004-09-10 | 2011-02-22 | Cavium Networks, Inc. | Packet queuing, scheduling and ordering |
US20060067348A1 (en) * | 2004-09-30 | 2006-03-30 | Sanjeev Jain | System and method for efficient memory access of queue control data structures |
US8037250B1 (en) | 2004-12-09 | 2011-10-11 | Oracle America, Inc. | Arbitrating cache misses in a multithreaded/multi-core processor |
US20060149921A1 (en) * | 2004-12-20 | 2006-07-06 | Lim Soon C | Method and apparatus for sharing control components across multiple processing elements |
US7418543B2 (en) | 2004-12-21 | 2008-08-26 | Intel Corporation | Processor having content addressable memory with command ordering |
US7555630B2 (en) * | 2004-12-21 | 2009-06-30 | Intel Corporation | Method and apparatus to provide efficient communication between multi-threaded processing elements in a processor unit |
US7467256B2 (en) | 2004-12-28 | 2008-12-16 | Intel Corporation | Processor having content addressable memory for block-based queue structures |
US20060140203A1 (en) * | 2004-12-28 | 2006-06-29 | Sanjeev Jain | System and method for packet queuing |
US7430643B2 (en) * | 2004-12-30 | 2008-09-30 | Sun Microsystems, Inc. | Multiple contexts for efficient use of translation lookaside buffer |
US20060150165A1 (en) * | 2004-12-30 | 2006-07-06 | Intel Corporation | Virtual microengine systems and methods |
JP4527571B2 (ja) * | 2005-03-14 | 2010-08-18 | 富士通株式会社 | 再構成可能演算処理装置 |
US7535907B2 (en) | 2005-04-08 | 2009-05-19 | Oavium Networks, Inc. | TCP engine |
WO2006123822A1 (ja) * | 2005-05-20 | 2006-11-23 | Sony Corporation | 信号処理装置 |
US20060294344A1 (en) * | 2005-06-28 | 2006-12-28 | Universal Network Machines, Inc. | Computer processor pipeline with shadow registers for context switching, and method |
US20070157030A1 (en) * | 2005-12-30 | 2007-07-05 | Feghali Wajdi K | Cryptographic system component |
US7680909B2 (en) * | 2007-03-21 | 2010-03-16 | Ittiam Systems (P) Ltd. | Method for configuration of a processing unit |
US8347068B2 (en) * | 2007-04-04 | 2013-01-01 | International Business Machines Corporation | Multi-mode register rename mechanism that augments logical registers by switching a physical register from the register rename buffer when switching between in-order and out-of-order instruction processing in a simultaneous multi-threaded microprocessor |
US7779233B2 (en) * | 2007-10-23 | 2010-08-17 | International Business Machines Corporation | System and method for implementing a software-supported thread assist mechanism for a microprocessor |
US8024719B2 (en) | 2008-11-03 | 2011-09-20 | Advanced Micro Devices, Inc. | Bounded hash table sorting in a dynamic program profiling system |
US20100115494A1 (en) * | 2008-11-03 | 2010-05-06 | Gorton Jr Richard C | System for dynamic program profiling |
US8478948B2 (en) * | 2008-12-04 | 2013-07-02 | Oracle America, Inc. | Method and system for efficient tracing and profiling of memory accesses during program execution |
CN101996103B (zh) * | 2009-08-20 | 2013-03-20 | 三星电子(中国)研发中心 | 多核云计算平台并行应用优化方法 |
US8732711B2 (en) * | 2010-09-24 | 2014-05-20 | Nvidia Corporation | Two-level scheduler for multi-threaded processing |
WO2012132017A1 (ja) * | 2011-03-31 | 2012-10-04 | 富士通株式会社 | 排他制御方法、および排他制御プログラム |
CN102495726B (zh) | 2011-11-15 | 2015-05-20 | 无锡德思普科技有限公司 | 机会多线程方法及处理器 |
US8902902B2 (en) | 2012-07-18 | 2014-12-02 | Netronome Systems, Incorporated | Recursive lookup with a hardware trie structure that has no sequential logic elements |
US9098264B2 (en) * | 2012-07-18 | 2015-08-04 | Netronome Systems, Inc. | Transactional memory that performs a direct 24-BIT lookup operation |
US9100212B2 (en) * | 2012-07-18 | 2015-08-04 | Netronome Systems, Inc. | Transactional memory that performs a direct 32-bit lookup operation |
US20140025884A1 (en) * | 2012-07-18 | 2014-01-23 | Netronome Systems, Inc. | Transactional Memory that Performs a Statistics Add-and-Update Operation |
KR101984635B1 (ko) | 2012-07-19 | 2019-05-31 | 삼성전자주식회사 | 어플리케이션을 고속으로 처리하는 연산 처리 장치 및 방법 |
US9152452B2 (en) * | 2012-08-29 | 2015-10-06 | Netronome Systems, Inc. | Transactional memory that performs a CAMR 32-bit lookup operation |
US9207944B1 (en) | 2013-03-15 | 2015-12-08 | Google Inc. | Doubling thread resources in a processor |
US9558000B2 (en) | 2014-02-06 | 2017-01-31 | Optimum Semiconductor Technologies, Inc. | Multithreading using an ordered list of hardware contexts |
US9766894B2 (en) * | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Method and apparatus for enabling a processor to generate pipeline control signals |
US9575802B2 (en) * | 2014-10-28 | 2017-02-21 | International Business Machines Corporation | Controlling execution of threads in a multi-threaded processor |
EP3250904A4 (en) * | 2015-01-30 | 2018-10-10 | Hewlett-Packard Development Company, L.P. | Multi-threaded fluid parameter signal processing |
US10706101B2 (en) | 2016-04-14 | 2020-07-07 | Advanced Micro Devices, Inc. | Bucketized hash tables with remap entries |
US10366019B1 (en) | 2016-09-04 | 2019-07-30 | Netronome Systems, Inc. | Multiprocessor system having efficient and shared atomic metering resource |
US10191867B1 (en) | 2016-09-04 | 2019-01-29 | Netronome Systems, Inc. | Multiprocessor system having posted transaction bus interface that generates posted transaction bus commands |
US10365681B1 (en) | 2016-09-04 | 2019-07-30 | Netronome Systems, Inc. | Multiprocessor system having fast clocking prefetch circuits that cause processor clock signals to be gapped |
US10810064B2 (en) | 2018-04-27 | 2020-10-20 | Nasdaq Technology Ab | Publish-subscribe framework for application execution |
CN111459630B (zh) * | 2020-03-24 | 2023-12-08 | 华东计算技术研究所(中国电子科技集团公司第三十二研究所) | 采用硬件多线程机制的网络处理器 |
CN112732416B (zh) * | 2021-01-18 | 2024-03-26 | 深圳中微电科技有限公司 | 有效消除数据访问延迟的并行数据处理方法及并行处理器 |
Family Cites Families (149)
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 |
BE795789A (fr) * | 1972-03-08 | 1973-06-18 | Burroughs Corp | Microprogramme comportant une micro-instruction de recouvrement |
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 |
US4016548A (en) * | 1975-04-11 | 1977-04-05 | Sperry Rand Corporation | Communication multiplexer module |
CH584488A5 (zh) * | 1975-05-05 | 1977-01-31 | Ibm | |
US4075691A (en) * | 1975-11-06 | 1978-02-21 | Bunker Ramo Corporation | Communication control unit |
US4130890A (en) | 1977-06-08 | 1978-12-19 | Itt Industries, Inc. | Integrated DDC memory with bitwise 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 |
JPS59111533A (ja) | 1982-12-17 | 1984-06-27 | Hitachi Ltd | デジタルデ−タ演算回路 |
US4831358A (en) * | 1982-12-21 | 1989-05-16 | Texas Instruments Incorporated | Communications system employing control line minimization |
US4745544A (en) * | 1985-12-12 | 1988-05-17 | Texas Instruments Incorporated | Master/slave sequencing processor with forced I/O |
US4788640A (en) | 1986-01-17 | 1988-11-29 | Intel Corporation | Priority logic system |
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 |
US4866664A (en) | 1987-03-09 | 1989-09-12 | Unisys Corporation | Intercomputer communication control apparatus & method |
US5142683A (en) | 1987-03-09 | 1992-08-25 | Unisys Corporation | Intercomputer communication control apparatus and method |
FR2625340B1 (fr) * | 1987-12-23 | 1990-05-04 | Labo Electronique Physique | Systeme graphique avec controleur graphique et controleur de dram |
US5115507A (en) * | 1987-12-23 | 1992-05-19 | U.S. Philips Corp. | System for management of the priorities of access to a memory and its application |
EP0357768B1 (en) | 1988-03-14 | 1994-03-09 | Unisys Corporation | Record lock processor for multiprocessing data 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 |
US5168555A (en) | 1989-09-06 | 1992-12-01 | Unisys Corporation | Initial program load control |
US5263169A (en) | 1989-11-03 | 1993-11-16 | Zoran Corporation | Bus arbitration and resource management for concurrent vector signal processor architecture |
DE3942977A1 (de) | 1989-12-23 | 1991-06-27 | Standard Elektrik Lorenz Ag | Verfahren zum wiederherstellen der richtigen zellfolge, insbesondere in einer atm-vermittlungsstelle, sowie ausgangseinheit hierfuer |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JPH03219305A (ja) * | 1990-01-25 | 1991-09-26 | Fanuc Ltd | 多数個取り指定方式 |
DE69132495T2 (de) * | 1990-03-16 | 2001-06-13 | Texas Instruments Inc | Verteilter Verarbeitungsspeicher |
US5390329A (en) * | 1990-06-11 | 1995-02-14 | Cray Research, Inc. | Responding to service requests using minimal system-side context in a multiprocessor environment |
US5347648A (en) | 1990-06-29 | 1994-09-13 | Digital Equipment Corporation | Ensuring write ordering under writeback cache error conditions |
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 |
AU630299B2 (en) | 1990-07-10 | 1992-10-22 | Fujitsu Limited | A data gathering/scattering system in a parallel computer |
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 |
KR960001273B1 (ko) * | 1991-04-30 | 1996-01-25 | 가부시키가이샤 도시바 | 단일칩 마이크로컴퓨터 |
US5255239A (en) | 1991-08-13 | 1993-10-19 | Cypress Semiconductor Corporation | Bidirectional first-in-first-out memory device with transparent and user-testable capabilities |
US5623489A (en) * | 1991-09-26 | 1997-04-22 | Ipc Information Systems, Inc. | Channel allocation system for distributed digital switching network |
US5392412A (en) * | 1991-10-03 | 1995-02-21 | Standard Microsystems Corporation | Data communication controller for use with a single-port data packet buffer |
GB2260429B (en) * | 1991-10-11 | 1995-05-24 | Intel Corp | Versatile cache memory |
US5392391A (en) * | 1991-10-18 | 1995-02-21 | Lsi Logic Corporation | High performance graphics applications controller |
US5557766A (en) * | 1991-10-21 | 1996-09-17 | Kabushiki Kaisha Toshiba | High-speed processor for handling multiple interrupts utilizing an exclusive-use bus and current and previous bank pointers to specify a return bank |
US5452437A (en) | 1991-11-18 | 1995-09-19 | Motorola, Inc. | Methods of debugging multiprocessor system |
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 | 松下電器産業株式会社 | レジスタファイル |
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 |
US5404484A (en) * | 1992-09-16 | 1995-04-04 | Hewlett-Packard Company | Cache system for reducing memory latency times |
DK0627100T3 (da) * | 1992-12-23 | 2000-06-26 | Ebauchesfabrik Eta Ag | Laveffekt-multitaskkontroller |
US5448702A (en) | 1993-03-02 | 1995-09-05 | International Business Machines Corporation | Adapters with descriptor queue management capability |
DE69429204T2 (de) * | 1993-03-26 | 2002-07-25 | Cabletron Systems Inc | Ablaufssteuerungsverfahren und -gerät für ein Kommunikationsnetzwerk |
US6311286B1 (en) * | 1993-04-30 | 2001-10-30 | Nec Corporation | Symmetric multiprocessing system with unified environment and distributed system functions |
CA2122182A1 (en) * | 1993-05-20 | 1994-11-21 | Rene Leblanc | Method for rapid prototyping of programming problems |
JPH0740746A (ja) * | 1993-07-29 | 1995-02-10 | Aisin Seiki Co Ltd | 車両用サンルーフ装置のチエツク機構 |
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 |
US5450351A (en) | 1993-11-19 | 1995-09-12 | International Business Machines Corporation | Content addressable memory implementation with random access memory |
US5740402A (en) * | 1993-12-15 | 1998-04-14 | Silicon Graphics, Inc. | Conflict resolution in interleaved memory systems with multiple parallel accesses |
US5485455A (en) * | 1994-01-28 | 1996-01-16 | Cabletron Systems, Inc. | Network having secure fast packet switching and guaranteed quality of service |
US5490204A (en) * | 1994-03-01 | 1996-02-06 | Safco Corporation | Automated quality assessment system for cellular networks |
US5835755A (en) | 1994-04-04 | 1998-11-10 | At&T Global Information Solutions Company | Multi-processor computer system for operating parallel client/server database processes |
JP3547482B2 (ja) * | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
US5542088A (en) * | 1994-04-29 | 1996-07-30 | Intergraph Corporation | Method and apparatus for enabling control of task execution |
US5721870A (en) * | 1994-05-25 | 1998-02-24 | Nec Corporation | Lock control for a shared main storage data processing system |
US5544236A (en) | 1994-06-10 | 1996-08-06 | At&T Corp. | Access to unsubscribed features |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
US5781774A (en) * | 1994-06-29 | 1998-07-14 | Intel Corporation | Processor having operating modes for an upgradeable multiprocessor computer system |
JP3810449B2 (ja) * | 1994-07-20 | 2006-08-16 | 富士通株式会社 | キュー装置 |
US5568476A (en) | 1994-10-26 | 1996-10-22 | 3Com Corporation | Method and apparatus for avoiding packet loss on a CSMA/CD-type local area network using receive-sense-based jam signal |
JP3169779B2 (ja) * | 1994-12-19 | 2001-05-28 | 日本電気株式会社 | マルチスレッドプロセッサ |
US5550816A (en) | 1994-12-29 | 1996-08-27 | Storage Technology Corporation | Method and apparatus for virtual switching |
US5784712A (en) * | 1995-03-01 | 1998-07-21 | Unisys Corporation | Method and apparatus for locally generating addressing information for a memory access |
US5701434A (en) | 1995-03-16 | 1997-12-23 | Hitachi, Ltd. | Interleave memory controller with a common access queue |
US5649157A (en) * | 1995-03-30 | 1997-07-15 | Hewlett-Packard Co. | Memory controller with priority queues |
US5886992A (en) * | 1995-04-14 | 1999-03-23 | Valtion Teknillinen Tutkimuskeskus | Frame synchronized ring system and method |
US5758184A (en) * | 1995-04-24 | 1998-05-26 | Microsoft Corporation | System for performing asynchronous file operations requested by runnable threads by processing completion messages with different queue thread and checking for completion by runnable threads |
US5592622A (en) * | 1995-05-10 | 1997-01-07 | 3Com Corporation | Network intermediate system with message passing architecture |
JPH08320797A (ja) * | 1995-05-24 | 1996-12-03 | Fuji Xerox Co Ltd | プログラム制御システム |
US5644780A (en) | 1995-06-02 | 1997-07-01 | International Business Machines Corporation | Multiple port high speed register file with interleaved write ports for use with very long instruction word (vlin) and n-way superscaler processors |
US5828746A (en) | 1995-06-07 | 1998-10-27 | Lucent Technologies Inc. | Telecommunications network |
US5828863A (en) | 1995-06-09 | 1998-10-27 | Canon Information Systems, Inc. | Interface device connected between a LAN and a printer for outputting formatted debug information about the printer to the printer |
US5613071A (en) * | 1995-07-14 | 1997-03-18 | Intel Corporation | Method and apparatus for providing remote memory access in a distributed memory multiprocessor system |
US5680641A (en) | 1995-08-16 | 1997-10-21 | Sharp Microelectronics Technology, Inc. | Multiple register bank system for concurrent I/O operation in a CPU datapath |
US5689566A (en) | 1995-10-24 | 1997-11-18 | Nguyen; Minhtam C. | Network with secure communications sessions |
US5809530A (en) | 1995-11-13 | 1998-09-15 | Motorola, Inc. | Method and apparatus for processing multiple cache misses using reload folding and store merging |
KR0150072B1 (ko) | 1995-11-30 | 1998-10-15 | 양승택 | 병렬처리 컴퓨터 시스템에서의 메모리 데이타 경로 제어장치 |
US5796413A (en) | 1995-12-06 | 1998-08-18 | Compaq Computer Corporation | Graphics controller utilizing video memory to provide macro command capability and enhanched command buffering |
US5850530A (en) | 1995-12-18 | 1998-12-15 | International Business Machines Corporation | Method and apparatus for improving bus efficiency by enabling arbitration based upon availability of completion data |
US5699537A (en) | 1995-12-22 | 1997-12-16 | Intel Corporation | Processor microarchitecture for efficient dynamic scheduling and execution of chains of dependent instructions |
EP0870386B1 (de) * | 1995-12-29 | 2000-04-12 | Tixi.Com GmbH Telecommunication | Verfahren und mikrocomputersystem zur automatischen, sicheren und direkten datenübertragung |
US6201807B1 (en) * | 1996-02-27 | 2001-03-13 | Lucent Technologies | Real-time hardware method and apparatus for reducing queue processing |
US5761507A (en) * | 1996-03-05 | 1998-06-02 | International Business Machines Corporation | Client/server architecture supporting concurrent servers within a server with a transaction manager providing server/connection decoupling |
US5764915A (en) * | 1996-03-08 | 1998-06-09 | International Business Machines Corporation | Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack |
US5809235A (en) | 1996-03-08 | 1998-09-15 | International Business Machines Corporation | Object oriented network event management framework |
US5797043A (en) | 1996-03-13 | 1998-08-18 | Diamond Multimedia Systems, Inc. | System for managing the transfer of data between FIFOs within pool memory and peripherals being programmable with identifications of the FIFOs |
US5784649A (en) * | 1996-03-13 | 1998-07-21 | Diamond Multimedia Systems, Inc. | Multi-threaded FIFO pool buffer and bus transfer control system |
US6199133B1 (en) * | 1996-03-29 | 2001-03-06 | Compaq Computer Corporation | Management communication bus for networking devices |
KR100219597B1 (ko) * | 1996-03-30 | 1999-09-01 | 윤종용 | 씨디-롬 드라이브에서의 큐잉 제어 방법 |
JP3541335B2 (ja) * | 1996-06-28 | 2004-07-07 | 富士通株式会社 | 情報処理装置及び分散処理制御方法 |
US5933627A (en) * | 1996-07-01 | 1999-08-03 | Sun Microsystems | Thread switch on blocked load or store using instruction thread field |
US5937187A (en) * | 1996-07-01 | 1999-08-10 | Sun Microsystems, Inc. | Method and apparatus for execution and preemption control of computer process entities |
US6023742A (en) * | 1996-07-18 | 2000-02-08 | University Of Washington | Reconfigurable computing architecture for providing pipelined data paths |
US5745913A (en) * | 1996-08-05 | 1998-04-28 | Exponential Technology, Inc. | Multi-processor DRAM controller that prioritizes row-miss requests to stale banks |
US5928736A (en) * | 1996-09-09 | 1999-07-27 | Raytheon Company | Composite structure having integrated aperture and method for its preparation |
US5812868A (en) * | 1996-09-16 | 1998-09-22 | Motorola Inc. | Method and apparatus for selecting a register file in a data processing system |
US6072781A (en) * | 1996-10-22 | 2000-06-06 | International Business Machines Corporation | Multi-tasking adapter for parallel network applications |
US5860158A (en) * | 1996-11-15 | 1999-01-12 | Samsung Electronics Company, Ltd. | Cache control unit with a cache request transaction-oriented protocol |
US5905876A (en) * | 1996-12-16 | 1999-05-18 | Intel Corporation | Queue ordering for memory and I/O transactions in a multiple concurrent transaction computer system |
US6212542B1 (en) * | 1996-12-16 | 2001-04-03 | International Business Machines Corporation | Method and system for executing a program within a multiscalar processor by processing linked thread descriptors |
US5854922A (en) * | 1997-01-16 | 1998-12-29 | Ford Motor Company | Micro-sequencer apparatus and method of combination state machine and instruction memory |
US6256115B1 (en) * | 1997-02-21 | 2001-07-03 | Worldquest Network, Inc. | Facsimile network |
US5742587A (en) * | 1997-02-28 | 1998-04-21 | Lanart Corporation | Load balancing port switching hub |
US5905889A (en) * | 1997-03-20 | 1999-05-18 | International Business Machines Corporation | Resource management system using next available integer from an integer pool and returning the integer thereto as the next available integer upon completion of use |
US5918235A (en) * | 1997-04-04 | 1999-06-29 | Hewlett-Packard Company | Object surrogate with active computation and probablistic counter |
US6535878B1 (en) * | 1997-05-02 | 2003-03-18 | Roxio, Inc. | Method and system for providing on-line interactivity over a server-client network |
US6182177B1 (en) * | 1997-06-13 | 2001-01-30 | Intel Corporation | Method and apparatus for maintaining one or more queues of elements such as commands using one or more token queues |
US6067585A (en) * | 1997-06-23 | 2000-05-23 | Compaq Computer Corporation | Adaptive interface controller that can operate with segments of different protocol and transmission rates in a single integrated device |
US5938736A (en) | 1997-06-30 | 1999-08-17 | Sun Microsystems, Inc. | Search engine architecture for a high performance multi-layer switch element |
US6393483B1 (en) * | 1997-06-30 | 2002-05-21 | Adaptec, Inc. | Method and apparatus for network interface card load balancing and port aggregation |
US5887134A (en) * | 1997-06-30 | 1999-03-23 | Sun Microsystems | System and method for preserving message order while employing both programmed I/O and DMA operations |
US6247025B1 (en) * | 1997-07-17 | 2001-06-12 | International Business Machines Corporation | Locking and unlocking mechanism for controlling concurrent access to objects |
US6170051B1 (en) * | 1997-08-01 | 2001-01-02 | Micron Technology, Inc. | Apparatus and method for program level parallelism in a VLIW processor |
US6014729A (en) * | 1997-09-29 | 2000-01-11 | Firstpass, Inc. | Shared memory arbitration apparatus and method |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
US5915123A (en) * | 1997-10-31 | 1999-06-22 | Silicon Spice | Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements |
EP0918280B1 (en) * | 1997-11-19 | 2004-03-24 | IMEC vzw | System and method for context switching on predetermined interruption points |
US6360262B1 (en) * | 1997-11-24 | 2002-03-19 | International Business Machines Corporation | Mapping web server objects to TCP/IP ports |
US6070231A (en) * | 1997-12-02 | 2000-05-30 | Intel Corporation | Method and apparatus for processing memory requests that require coherency transactions |
US6272520B1 (en) * | 1997-12-31 | 2001-08-07 | Intel Corporation | Method for detecting thread switch events |
JPH11203860A (ja) * | 1998-01-07 | 1999-07-30 | Nec Corp | 半導体記憶装置 |
US6223238B1 (en) * | 1998-03-31 | 2001-04-24 | Micron Electronics, Inc. | Method of peer-to-peer mastering over a computer bus |
US6079008A (en) * | 1998-04-03 | 2000-06-20 | Patton Electronics Co. | Multiple thread multiple data predictive coded parallel processing system and method |
KR100280460B1 (ko) * | 1998-04-08 | 2001-02-01 | 김영환 | 데이터 처리 장치 및 이의 복수의 스레드 처리 방법 |
US6373848B1 (en) * | 1998-07-28 | 2002-04-16 | International Business Machines Corporation | Architecture for a multi-port adapter with a single media access control (MAC) |
US6073215A (en) * | 1998-08-03 | 2000-06-06 | Motorola, Inc. | Data processing system having a data prefetch mechanism and method therefor |
US6366998B1 (en) * | 1998-10-14 | 2002-04-02 | Conexant Systems, Inc. | Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model |
US6347344B1 (en) * | 1998-10-14 | 2002-02-12 | Hitachi, Ltd. | Integrated multimedia system with local processor, data transfer switch, processing modules, fixed functional unit, data streamer, interface unit and multiplexer, all integrated on multimedia processor |
US6212611B1 (en) * | 1998-11-03 | 2001-04-03 | Intel Corporation | Method and apparatus for providing a pipelined memory controller |
US6389449B1 (en) * | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6338078B1 (en) * | 1998-12-17 | 2002-01-08 | International Business Machines Corporation | System and method for sequencing packets for multiprocessor parallelization in a computer network system |
US6356692B1 (en) * | 1999-02-04 | 2002-03-12 | Hitachi, Ltd. | Optical module, transmitter, receiver, optical switch, optical communication unit, add-and-drop multiplexing unit, and method for manufacturing the optical module |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US6529983B1 (en) * | 1999-11-03 | 2003-03-04 | Cisco Technology, Inc. | Group and virtual locking mechanism for inter processor synchronization |
US6532509B1 (en) * | 1999-12-22 | 2003-03-11 | Intel Corporation | Arbitrating command requests in a parallel multi-threaded processing system |
US6694380B1 (en) * | 1999-12-27 | 2004-02-17 | Intel Corporation | Mapping requests from a processing unit that uses memory-mapped input-output space |
US6324624B1 (en) * | 1999-12-28 | 2001-11-27 | Intel Corporation | Read lock miss control and queue management |
US6307789B1 (en) * | 1999-12-28 | 2001-10-23 | Intel Corporation | Scratchpad memory |
US6560667B1 (en) * | 1999-12-28 | 2003-05-06 | Intel Corporation | Handling contiguous memory references in a multi-queue system |
US6584522B1 (en) * | 1999-12-30 | 2003-06-24 | Intel Corporation | Communication between processors |
-
1999
- 1999-08-31 US US09/387,046 patent/US6668317B1/en not_active Expired - Lifetime
-
2000
- 2000-08-17 CN CN200710180338XA patent/CN101221493B/zh not_active Expired - Fee Related
- 2000-08-17 AU AU70616/00A patent/AU7061600A/en not_active Abandoned
- 2000-08-17 DE DE60011797T patent/DE60011797T2/de not_active Expired - Lifetime
- 2000-08-17 CN CNB008152462A patent/CN100378655C/zh not_active Expired - Fee Related
- 2000-08-17 WO PCT/US2000/022650 patent/WO2001016718A1/en active IP Right Grant
- 2000-08-17 EP EP00959265A patent/EP1221086B1/en not_active Expired - Lifetime
- 2000-08-17 AT AT00959265T patent/ATE269988T1/de not_active IP Right Cessation
- 2000-08-17 CA CA002383384A patent/CA2383384A1/en not_active Abandoned
-
2003
- 2003-03-11 HK HK03101735.5A patent/HK1049719B/zh not_active IP Right Cessation
- 2003-08-19 US US10/643,438 patent/US7191321B2/en not_active Expired - Lifetime
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306404C (zh) * | 2003-04-24 | 2007-03-21 | 国际商业机器公司 | 多线程处理器在单线程与并发多线程模式之间的动态切换的装置与方法 |
CN1801775A (zh) * | 2004-12-13 | 2006-07-12 | 英特尔公司 | 流分配 |
CN1801775B (zh) * | 2004-12-13 | 2014-03-26 | 英特尔公司 | 流分配 |
CN101847106A (zh) * | 2009-02-20 | 2010-09-29 | 株式会社日立制作所 | 基于多处理器的数据包处理装置以及数据包处理方法 |
CN104011681B (zh) * | 2012-01-06 | 2017-07-28 | 国际商业机器公司 | 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息 |
CN104011681A (zh) * | 2012-01-06 | 2014-08-27 | 国际商业机器公司 | 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息 |
WO2014161440A1 (zh) * | 2013-04-02 | 2014-10-09 | 中兴通讯股份有限公司 | 一种网络处理器异常检测方法、装置及网络处理设备 |
CN103200048A (zh) * | 2013-04-02 | 2013-07-10 | 中兴通讯股份有限公司 | 一种网络处理器异常检测方法、装置及网络处理设备 |
CN103200048B (zh) * | 2013-04-02 | 2018-07-13 | 中兴通讯股份有限公司 | 一种网络处理器异常检测方法、装置及网络处理设备 |
CN104581172A (zh) * | 2014-12-08 | 2015-04-29 | 北京中星微电子有限公司 | 一种实现svc宏块级算法的硬件结构 |
CN109525443A (zh) * | 2018-12-29 | 2019-03-26 | 广州供电局有限公司 | 分布式前置采集通讯链路的处理方法、装置和计算机设备 |
CN109525443B (zh) * | 2018-12-29 | 2019-12-10 | 广州供电局有限公司 | 分布式前置采集通讯链路的处理方法、装置和计算机设备 |
CN111079904A (zh) * | 2019-12-23 | 2020-04-28 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法、存储介质及应用 |
CN111079904B (zh) * | 2019-12-23 | 2023-05-23 | 福建星网视易信息系统有限公司 | 深度可分离卷积的加速方法和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2001016718A1 (en) | 2001-03-08 |
EP1221086B1 (en) | 2004-06-23 |
EP1221086A1 (en) | 2002-07-10 |
US20040054880A1 (en) | 2004-03-18 |
HK1049719A1 (en) | 2003-05-23 |
CN101221493B (zh) | 2012-06-06 |
US6668317B1 (en) | 2003-12-23 |
CN101221493A (zh) | 2008-07-16 |
CN100378655C (zh) | 2008-04-02 |
HK1049719B (zh) | 2008-11-21 |
CA2383384A1 (en) | 2001-03-08 |
DE60011797D1 (de) | 2004-07-29 |
US7191321B2 (en) | 2007-03-13 |
DE60011797T2 (de) | 2005-07-14 |
AU7061600A (en) | 2001-03-26 |
ATE269988T1 (de) | 2004-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1387641A (zh) | 并行处理器中的多线程执行 | |
CN1387644A (zh) | 并行处理器体系结构的sdram控制器 | |
CN1192314C (zh) | 并行处理器结构的sram控制器 | |
CN1185592C (zh) | 并行处理器结构 | |
CN1296818C (zh) | 用于多线程并行处理器的指令 | |
CN1205553C (zh) | 分优先级访问外部装置的设备 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN100342349C (zh) | 错误推测之后的指令再执行的流水线外部跟踪缓冲器 | |
CN1199109C (zh) | 通过重排序存储器请求提高总线利用率的存储器控制器 | |
CN1285064A (zh) | 进行无序多线程执行的加载和存储指令排序系统 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1357121A (zh) | 对不同时间执行的存储器访问,检测在数据总线上的数据冲突的装置和方法 | |
CN1993674A (zh) | 多芯架构中的资源管理 | |
CN1967506A (zh) | 高速缓存存储器处理器中的合并入口 | |
CN1846194A (zh) | 一种在处理器中执行的计算线程的暂停与解除分配的整合机制 | |
CN1333891A (zh) | 利用页标志寄存器跟踪存储器装置内物理页的状态 | |
CN1758213A (zh) | 带有共享内容的异构型并行多线程处理器(hpmt) | |
CN1243311C (zh) | 实现重叠操作的方法和系统 | |
CN1291325C (zh) | 通过源/目的转换机构实现高速存储器克隆的方法和系统 | |
CN1397874A (zh) | 高速缓存的快取线选取目标地址的装置及方法 | |
CN1504902A (zh) | 在存储器部件之间保持数据一致性的方法和系统 | |
CN1311357C (zh) | 通用资源访问控制器 | |
CN1152300C (zh) | 多媒体信号处理器中的单指令多数据处理方法及其装置 | |
CN1044354A (zh) | 指令执行高效率生产线方法及装置 | |
CN1504904A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: GR Ref document number: 1049719 Country of ref document: HK |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080402 Termination date: 20170817 |