CN101681274B - 接口处理器 - Google Patents

接口处理器 Download PDF

Info

Publication number
CN101681274B
CN101681274B CN200880015942.XA CN200880015942A CN101681274B CN 101681274 B CN101681274 B CN 101681274B CN 200880015942 A CN200880015942 A CN 200880015942A CN 101681274 B CN101681274 B CN 101681274B
Authority
CN
China
Prior art keywords
thread
port
activity
instruction
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.)
Active
Application number
CN200880015942.XA
Other languages
English (en)
Other versions
CN101681274A (zh
Inventor
戴维·梅
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.)
Xmos Ltd
Original Assignee
Xmos Ltd
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 Xmos Ltd filed Critical Xmos Ltd
Publication of CN101681274A publication Critical patent/CN101681274A/zh
Application granted granted Critical
Publication of CN101681274B publication Critical patent/CN101681274B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3237Power saving characterised by the action undertaken by disabling clock generation or distribution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3287Power saving characterised by the action undertaken by switching off individual functional units in the computer system
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本发明提供了一种处理器,其包括:第一端口,用于根据第一端口处的第一活动生成第一指示;第二端口,用于根据第二端口处的第二活动生成第二指示。该处理器还包括执行单元,被设置为执行多个线程;以及线程调度器,被连接以接收指示并被设置为根据这些指示调度多个线程用于由执行单元执行。调度包括暂停线程的执行直到收到各指示。第一活动和第二活动中的每个都与各相应线程相关联。

Description

接口处理器
技术领域
本发明涉及接口处理器,该接口处理器是特别用于但不专门用于与其他处理器或外部设备接口的处理器。
背景技术
处理器设计者面临的一个挑战是处理数目持续增加的要与处理器通信的外部设备。通常,这是通过为处理器提供某些类型的中断处理能力(interrupt handling capability)实现的,该处理器处理连接到外部设备的端口产生的活动。日益增加地,更为复杂性的接口逻辑被用于这些端口来处理,例如,每个端口的多个外部设备。
大量不同情形中都需要接口。这里作为背景例子讨论的一个情形是移动应用处理。
图1示出移动应用处理器2的示例性应用。应用处理器2包括CPU 4和与多个外部设备8接口的多个接口控制器6。接口控制器包括:与硬驱(HDD)8a和SDRAM存储器8b接口的存储器控制器6a;与摄像机8c接口的视频控制器6b;与LCD显示器8d接口的显示器控制器6c;与麦克风8e、扬声器8f和耳机8g接口的音频控制器6d;和与键盘8h、通用串行总线(USB)设备8i、安全数字(SD)卡8j、多媒体卡(MMC)8k,以及通用异步接收器/发送器(UART)8i接口的连接控制器6e。接口控制器6通常经总线3连接到CPU 4。系统还包括功率控制器10和无线电处理器12。
注意所示接口控制器6多少具有示意性,但通常表示某些类型的专用I/O逻辑或特别配置的端口。
传统上,外部接口是用中断或利用轮询实现的。在使用中断时,外部外围设备发送信号告知处理器其有数据准备好输入给处理器或向处理器要求数据。在使用轮询时,处理器不断检查设备的状态从而确定是否设备准备好提供或接受数据。
如图1所示的应用程序处理器2的一个可能的实施是使用专用集成电路微控制器(ASIC)。ASIC是硬连线的设备,其可能包括专用于特定应用以及经优化适于该应用的微处理器。对于给定的功能,与其他选择相比,它们通常更便宜并且能耗更低。然而,它们计复杂,必须预设计且不能容易地重配置。
另一种可能是使用现场可编程门阵列(FPGA)设备。FPGA是半导体设备,其可在制造后现场配置。为了配置FPGA,首先利用计算机建模所需的逻辑功能,例如通过绘制示意图或创建描述功能的文本文件。FPGA包括经静态配置的互连线进行通信的查询表阵列。计算机模型是用FPGA卖家提供的软件编译的,这产生能够下载到FPGA查询表的二进制文件。这允许装备制造商设计FPGA从而满足其自身的个性化需要。
在该例子中,接口控制器6作为FPGA实施。这具有这样的益处,即移动电话制造商可购买通用FPGA设备2,然后在当场(即“现场”)将其配置成专用于他们所需要应用的。然而,FPGA的缺点是与ASIC相比更为昂贵,速度更缓慢以及能耗较高。
在可选的例子中,整个芯片2可以用FPGA实现,或芯片2可以是具有连接在芯片2和各外围设备8之间的分离的FPGA芯片的通用目的处理器。然而,这些选择可能更为昂贵以及功耗更高——限制了多数移动电话和其他消费电子设备。
以ASIC的价格、速度、范围和能耗水平实现FPGA的可配置性会是有利的。
发明内容
按照本发明的一个方面,提供了一种处理器,其包括:第一端口,该第一端口用于基于第一端口处的第一活动生成第一指示;第二端口,该第二端口用于基于第二端口处的第二活动生成第二指示;执行单元,其被设置为执行多个线程;线程调度器(threadscheduler),其被连接以接收所述指示以及被设置为调度所述多个线程用于执行单元基于所述指示而执行,所述调度包括暂停(suspending)线程的执行直到接收到相应指示;其中第一活动和第二活动分别与各相应线程关联。
因为每个线程与各端口处的活动相关联,以及线程调度器被连接以暂停该活动的线程等待(pending)指示,则处理器有利地“预先准备好”以快速响应发生在端口的活动。因此本发明提供了在需要快速响应外部激励的应用中的显著改进。另外,在线程被暂停时,如果仍然要调度其他线程,则线程调度器可开始调度这些线程。
在要求快速反应时间时,暂停的线程方法对使用中断是优选的。使用暂停的线程,线程调度器可准备执行预期关联活动的线程,如上面讨论的那样,这意味着处理器做好了反应的准备。相反,使用中断,执行单元由来自外部设备的信号中断,同时执行某些潜在无关代码。在中断情形中,当前程序状态必须在中断起作用前被保存。因此,使用中断的反应时间非常慢。轮询的能量效率较低,因为要求不断的询问和应答。
线程调度器可设置为将与暂停等待第一事件的第一线程相关的第一线程标识符传输到与第一端口关联的标识符寄存器。线程调度器可设置为将与暂停等待第二事件的第二线程相关的第二线程标识符传输到与第二端口关联的标识符寄存器。在这样的实施例中,线程调度器适于管理线程的执行,但在其遇到取决于特定活动的线程内指令时,线程调度器可有利地通过将其责任传给各与其关联的端口而“撇开(set aside)”线程。这也有助于反应时间。
线程调度器可设置为在暂停所述第一线程后将连续点矢量(continuation point vector)传送至与第一端口关联的矢量寄存器;且连续点矢量可根据第一活动返回给执行单元。连续点矢量标识代码中某个点,在各活动发生时执行应在该点继续。这可有利地允许线程额外的责任(responsibility)发送到端口,以及可释放不必以等待(pending)指令填充的指令缓冲器。
另外,使用连续点矢量可允许每个线程处理多个活动(或事件)。因此,第一线程可与来自多个端口的活动关联,每个端口用于生成依赖于该活动的各指示;执行单元可适于传输多个连续点矢量的每个至各所述多个端口之一,各连续点矢量是根据各活动返回的,且线程调度器可适于暂停第一线程的执行,直到接收各指示中的至少一个。
一旦暂停线程的所有线程标识符传输到端口,处理器可以关闭(power down)执行单元、线程调度器和时钟中的至少一个。当从各处理器端口返回至少一个线程标识符时,处理器可以上电(powerup)所述执行单元、线程调度器和时钟中的至少一个。因此,如果所有线程已经调度以及按各端口活动交给各端口,然后处理器可以关闭部分或全部组件直到发生一个活动。这显著改善系统的功耗。
第一和第二端口中至少一个可包括活动处理逻辑以及可与至少一个用于存储条件的条件寄存器(condition register)关联,活动处理逻辑被设置为用于监视端口的活动以及根据满足所述条件的所述活动生成所述指示。执行单元可设置为传送各条件至每个条件寄存器。有利地,这通过允许线程调度器为端口提供条件改善了系统的通用性,以使端口可处理更特殊的和多样的条件类型。
端口事件启用标记可与第一端口关联,且线程调度器可适于通过使端口事件启用标记有效(assert)使得所述第一活动触发所述调度,以及通过使端口事件启用标记无效(de-assert)而禁止第一活动触发所述调度。线程事件启用标记可与第一线程关联;而线程调度器可适于通过使线程事件启用标记有效,根据第一活动使第一线程能够被调度,以及通过使线程事件启用标记无效,根据第一活动禁止调度第一线程。线程调度器可适于暂停第一线程的执行,该第一线程等待来自端口的第三活动的第三指示,同时端口事件启用标记和线程事件启用标记中至少一个被无效。
端口事件启用标记和线程事件启用标记中至少一个可被第一活动的生成自动无效。
多个各自端口事件启用标记可与多个与第一线程关联的端口中的每个关联;且线程调度器可设置为使线程启用标记有效,以及随后使所述多个端口事件启用标记有效。
处理器可包括由总线连接到执行单元的程序存储器,其中线程调度器通过至少一个与所述总线分离的连接而连接以接收来自第一和第二端口中每个端口的所述指示。这消除了端口和线程调度器间的通信中总线仲裁的需求,因此进一步改善处理器的反应时间。
处理器可包括多个线程寄存器组,每组线程寄存器都被分配来存储关于所述多个线程的各个线程的信息。处理器可包括在至少两组所述线程寄存器间的至少一个通道,且线程调度器可适于根据在所述通道上发生的活动调度线程。
处理器可在芯片上实施。所述第一和第二端口中的至少一个可以是与所述芯片上另一个处理器通信的内部端口。所述第一和第二端口中的至少一个可以是与所述芯片外部设备通信的外部端口。至少一个外部端口可以是用于检测出现在芯片物理边界处引脚(pin)上的信号的上升沿或下降沿的引脚端口。至少一个外部端口可以是用于处理端口处一个或多个位的瞬时逻辑电平(logic-level)的数据端口。
执行单元可适于识别和执行用于暂停和运行线程的专用指令。
线程调度器还可以适于基于中断对线程进行调度。基于中断被调度的线程是第一线程,当暂停时该中断将第一线程中断。
如果关联活动发生在取决于该活动的线程内的指令执行时或执行之前,则线程调度器可适于调度线程而无需暂停。
根据本发明的进一步方面,提供了调度多个线程的方法,用于具有第一和第二端口的处理器中的执行(execution),该方法包括:将第一端口的第一活动及第二端口的第二活动与各相应线程相关联;根据第一活动在第一端口生成第一指示;根据第二活动在第二端口生成第二指示;基于所述指示调度线程用于执行,所述调度包括暂停线程的执行直到接收各指示;以及根据所述调度通过执行线程而运行线程。
根据本发明的另一个方面,提供了端口,用于调度多个线程以便执行,该端口包括:活动处理逻辑电路,设置为根据端口处的活动生成指示,寄存器,存储用于识别与所述活动关联的线程的信息,以及寄存器,用于存储一个条件;其中所述活动处理逻辑电路适于在所述活动满足所述条件时传输芯片上第一指示。
根据本发明的另一个方面,提供了线程调度器,其用于调度具有第一端口和第二端口的处理器内多个线程以用于执行,其中:该线程调度器适于接收第一端口根据第一端口的第一活动生成的第一指示;该线程调度器适于接收第二端口根据第二端口的第二活动生成的第二指示;且线程调度器适于基于所述指示调度所述多个线程用于通过该单元执行来执行,所述调度包括暂停线程的执行直到接收各指示;其中第一活动和第二活动中的每一个都与各相应线程关联。
按照本发明的另一个方面,提供了具有移动应用程序处理器的移动终端,至少一个外围设备,和连接在移动应用程序处理器与外围设备之间的接口处理器,接口处理器包括:第一端口,根据第一端口处的第一活动用于生成第一指示;第二端口,根据第二端口处的第二活动生成第二指示;执行单元,设置为执行多个线程;和线程调度器,被连接以接收所述指示以及设置为根据所述指示调度所述多个线程用于该执行单元执行,所述调度包括暂停线程的执行直到接收各指示;其中第一活动和第二活动中的每一个都与各相应线程关联。
按照本发明的另一个方面,提供了互连处理器阵列,至少一个所述处理器包括:用于根据第一端口处的第一活动生成第一指示的第一端口;用于根据第二端口处的第二活动生成第二指示的第二端口;设置为执行多个线程的执行单元;以及线程调度器,被连接以接收所述指示以及被设置为基于所述指示来调度所述多个线程用于该执行单元执行;所述调度包括暂停线程的执行直到接收到各个指示,其中第一活动和第二活动每个都与各相应线程关联;以及所述第一和第二端口中的至少一个连接阵列中至少一个处理器和另一个处理器。
为了更好地理解本发明以及示出其如何实施,作为例子要参考相应附图。
附图说明
图1示出本领域已知的应用FPGA设备的例子;
图2示出接口处理器的应用例子;
图2a示出接口处理器的另一个应用例子;
图3是接口处理器架构的示意表示;
图4是端口的示意表示;
图5是线程寄存器组的示意表示;
图6是示出线程调度器操作的流程图;
图7是线程寄存器组间通道的示意图;以及
图7A是通道末端(channel end)的示意图。
具体实施方式
图2示出移动电话中接口处理器的示例性应用。移动应用处理器2需要与多个外围设备8通信。如图1所示,应用处理器2包括总线3,CPU 4,以及与硬驱(HDD)8a和SDRAM存储器8b接口的存储器控制器6a,以及功率控制器10和无线电处理器12。
然而,取代专用控制器6,图2的装置允许CPU 4经通用端口7与外部通信。在该例子中,提供了通用端口7a和7b用于与摄像机8c和LCD显示器8d接口;提供了通用端口7c用于与麦克风8e、扬声器8f和耳机8g接口;提供了通用端口7d用于与键盘8h、通用串行总线(USB)设备8i、安全数字(SD)卡8j、多媒体卡(MMC)8k,以及通用异步接收器/发射器(UART)设备8l接口。
在图2中,接口处理器14a、14b和14c设置在相关端口7的输出处,其中第一接口处理器14a连接在图像设备8c-8d和通用端口7a-7b之间,第二接口处理器14b连接在视频设备8e-8g间,以及第三接口处理器14c连接在通用端口7d和不同连接设备8h-8m间。端口7仅需要是一般用途端口,因为专用显示器,音频和连接功能是由接口处理器14a-14c以后面详述的方式实现的。端口7不需要使用FPGA逻辑电路,因为接口处理器14提供灵活性和可配置性,否则要由FPGA提供。接口处理器14a具有连接到端口7a和7b的端口22a和22b,连接到外部设备8c和8g的端口22c,22d,22e和22f。接口处理器14b和14c具有类似端口,图2中没有示出。
接口处理器通常涉及执行用来经接口发送数据的特定协议,再格式化数据包括将数据在并行格式(parallel format)和串行格式(serial format)间进行转换,以及可能的更高水平功能,如对其编码、压缩或加密。
接口处理器的另一个应用是在图2a中所示的多处理器芯片202中作为核(tile)。这样的芯片202使用高性能互连204,该高性能互连204支持芯片202上处理器14和芯片间链路206之间的通信以便系统可容易地由多个芯片构造。每个处理器14经端口22连接到其芯片间链路206和高性能互连线204。
下面更充分讨论的接口处理器的重要特征是其管理端口22处的活动的能力。每个接口处理器包括CPU、存储器和通信器。为了允许CPU与端口间的直接连接和响应性连接,每个处理器具有用于执行大量同时程序线程(concurrent program threads)的硬件支持,每个都包括指令序列,以及至少其中一些专门负责处理端口的活动。如下面更详细的讨论,硬件支持包括:
-用于每个线程的寄存器组,
-动态选择执行哪个线程的线程调度器,
-用于输入和输出的端口组(端口22),
每个处理器上使用一小组线程可用来允许通信或输入/输出以与处理器处理的其他等待任务一起进行,以及通过当其他线程暂停等待与远程接口处理器间通信时允许某些线程继续而允许互连中等待隐藏(latency hiding)。
图3示意地示出根据本发明一个实施例的接口处理器14的示例性架构。处理器14包括在线程调度器18控制下执行指令线程的执行单元16。处理器14还包括保存程序代码和其他数据的随机存取存储器(RAM)24,以及用于存储诸如起动代码(boot code)的永久信息的只读存储器(ROM)(未示出)。
线程调度器18动态选择哪个线程应由执行单元16执行。传统上,线程调度器的功能将仅从程序存储器中调度线程,以便保持处理器被完全占用。然而,按照本发明,线程调度器18的调度也涉及端口22处的活动。这方面应该注意的是,线程调度器可直接耦合到端口22以便在线程由于端口处的输入或输出活动而变得可运行时最小化延迟。
线程调度器18考虑的m个线程中的每个线程由线程调度器18存取的寄存器库(bank)20中各组线程寄存器201...20m表示。还被提供了指令缓冲器(INSTR)19用于在将从存储器24取出的指令传入执行单元16之前临时保存该指令。这些寄存器和缓冲器的细节在下面讨论。
m个线程中,线程调度器18保持一组n个可运行线程,该组线程被称为“运行”,线程调度器从该组中优选地以循环方式(round-robin manner)依次提取指令。当线程不能继续时,则通过将其从运行组中移除而使其暂停。其原因可以是例如,因为线程正等待一个或多个以下类型的活动:
-在线程能够运行之前其寄存器被初始化,
-线程尝试从未就绪或没有可用数据的端口输入,
-线程尝试对未就绪或没有用于数据的空间的端口输出,
-线程执行了引起线程等待一个或多个事件的指令,该事件可以是端口准备好输入时生成的。
注意这里所用的术语“事件”是指特殊类型的操作,其与基本输入-输出操作稍有不同。下面结合图4和5讨论所述的区别。
有利地,为了有助于快速反应时间,在线程调度器18和执行单元16之间提供直接硬线连接28,以允许线程调度器18控制执行单元16应取出并执行哪个或哪些线程。直接硬线路径30a,30b,30c也提供在线程调度器18和每个端口22之间;以及在线程调度器18和每个寄存器20之间提供直接硬线路径291...29m。这些直接路径优选地提供控制路径,其允许线程调度器将各线程与一个或多个端口22相关联,以及特别地当某些活动发生时从端口返回就绪指示,这样允许处理器快速响应发生在端口22的活动或激励。线程调度器涉及端口的操作将在下面结合图4和6讨论。
执行单元16还通过直接连接27和31访问每个端口22a-22c以及每个寄存器201-20m,因此在芯处理器、寄存器、和外部环境间提供了直接链接。优选地,这些直接路径提供进一步的控制路径以允许执行单元将条件发送给端口。这将在下面结合图4进一步详细讨论。直接路径27和31也可允许数据在线程调度器20和端口22间直接输入和输出,因此允许线程直接与外部环境通信。例如,数据可直接从外部设备写入到线程的操作数寄存器之一,而非写入到存储器24以及随后从其中取出。相反,在一次运算之后,来自操作数寄存器的数据可由执行单元16拾取并直接发送出端口22。这显著改善了反应时间。
值得注意的是“直接连接”或“直接路径”表示与执行单元和程序存储器24之间的连接相分离的连接。因此,例如线程调度器18和执行单元16可存取从端口22输入的数据,而不必将数据存储在存储器24中以及随后从其中取出。特别地,如果执行单元16和存储器24之间是通过总线3连接的,则“直接”连接或路径意味着与总线相分离的连接或路径。因此,端口22、寄存器20、线程调度器18和执行单元16间的各种通信都可发生而无需总线仲裁,改善反应时间。端口22还可提供与总线13的额外连接(未示出)。
本申请中所用的术语“端口”可指“针式端口(pin port)”或“数据端口”。针式端口负责检测单独的逻辑变换,即发生在处理器芯片物理边界处引脚上的信号的上升沿和下降沿。数据端口是“更高层次(higher level)”,因为它们可处理一个或多个位,通常累加在I/O缓冲器中,以及通常构成数据的一部分,如字。不用检测上升沿和下降沿,数据端口处理特定瞬间的一个或多个位的状态或逻辑电平。数据端口可以是开/关芯片(on/off chip),或可以是对嵌在同一芯片上的另一处理器的端口。注意“针式端口”和“数据端口”实际上可指同一实际端口的不同模式。
图4示意地示出按照本发明优选实施例的端口22。端口22包括I/O缓冲器32用于发送来自或者送往处理器14的数据。此外,每个端口22包括活动操纵逻辑36用于监视发生在端口的活动以及利用至少一个就绪数位或标记37将特定活动的发生信号化。就绪标记37优选地通过直接路径30发信号告知线程调度器。端口可检测的潜在活动包括:
-数据已经输入到端口
-某些特定数据已经输入到端口,以及/或
-端口已经可用于输出。
为了有助于对这些活动的检测,端口22被提供了一组寄存器38。这些包括线程标识符(TID)寄存器用于存储相关线程的标识(identification),控制(CTRL)寄存器用于存储一个或多个条件,连续点矢量(VECTOR)寄存器用于存储程序中执行被暂停的位置,以及数据(DATA)寄存器用于存储任何与条件关联的数据。值TID由线程调度器18通过直接路径30(图3中直接路径是30a,30b,30c)写入到寄存器38中,以及值VECTOR、CTR和DATA是由执行单元16通过直接路径31写入的。一旦检测到所需活动,TID返回到线程调度器18,以便识别关联的线程。活动逻辑还包括下面进一步详细讨论的启用标记39。
注意,虽然图4中所示寄存器38包含在端口22内,它们实际上可位于处理器14中任何其他地方并仅与端口22关联。
图5示出用来表示线程的示例性线程寄存器库20。寄存器库20包括对应于当前由线程调度器18所考虑的各线程T1到Tm的多个寄存器组。在该优选例子中,每个线程的状态由18个寄存器表示:2个控制寄存器,4个存取寄存器和12个操作数寄存器。这些寄存器分别如下:
控制寄存器:
-PC是程序计数器
-SR是状态寄存器
存取寄存器:
-GP是全局公用指针(global pool pointer)
-DP是数据指针
-SP是栈指针
-LR是链接寄存器
操作数寄存器:OP1...OP12
控制寄存器存储关于线程状态以及用于控制线程执行的信息。特别地,线程接受事件或中断的能力由保存在线程状态寄存器SR中的信息控制。存取寄存器包括用于进程的局部变量的栈指针,通常用于进程间共享数据的数据指针,以及用于存取大常数和进程入口点(procedure entry points)的常数公用指针(constant poolpointer)。操作数寄存器OP1...OP12由指令使用,该指令执行算术和逻辑操作,存取数据结构,以及调用子程序。
还提供了大量指令缓冲器(INSTR)19用于临时存储线程实际指令。每个指令缓冲器优选为64位长,且每个指令优选为16位长,允许每个缓冲器存储4个指令。指令是在线程调度器18的控制下从程序存储器24取出的并被临时存放在指令缓冲器19中。
执行单元可存取每个寄存器20和缓冲器19。进一步,线程调度器18至少可为每个线程存取状态寄存器SR。
如上所述,这里所用的术语“事件”指特定类型的操作,或对应于特定类型操作的活动。基于操作的事件与基本输入-输出操作稍有不同,且以如下方式工作。事件首先是通过从执行单元16将连续点矢量和从线程调度器18将线程标识符转移到与端口22关联的VECTOR和TID寄存器38而为线程设定的,优选地经直接路径31和30。关联的条件和条件数据还可写入端口22的CTRL和DATA寄存器38中。这样在端口设定事件,但不必启用。为了使端口生成事件指示,还必须(优选地由线程调度器18通过直接路径30)使端口的启用标记39有效。此外,为了使线程自身接受事件,线程的各状态寄存器SR中的线程事件启用(EE)标记必须被设定为事件启用的。一旦事件这样设定并启用,线程就可以使用基于事件(event-based)的等待指令暂停等待事件,该基于事件的等待指令作用于线程调度器18。此时,当前等待指令可从相关指令缓冲器19中丢弃。当事件发生,如某些数据输入到端口时,通过从端口22返回到线程调度器18和执行单元16的线程标识符和连续点矢量,信号告知该发生,允许连续点矢量处的指令从程序存储器24取出以及存入指令缓冲器19,以及执行在代码中适当位置点继续。
当事件发生时,各状态寄存器SR中线程EE标记可设定为事件禁止以防止线程在事件发生后立即对事件做出反应。作为事件发生时线程执行指令的结果,启用标记39可被无效。
在准备等待来自一个或多个端口的事件中设置多个端口时,可以使启用标记39有效。线程EE标记还可在启用一组端口启用标记前设定为事件启用(event-enable)的,以及在该情形中就绪的即将启用的第一端口将生成事件,该事件通过在连续点矢量立即取出以及执行指令使得当前指令被丢弃以及继续执行。
端口启用标记39和状态寄存器EE标记的优点在于:事件的启用和禁止是与事件设立和通过等待指令暂停线程分离的,允许不同输入和输出条件准备好用于特定线程和/或为各种不同线程开启和关闭(toggled on and off)。例如,事件可以被留作在端口22建立,即使事件被禁止。因此,事件可以由线程重复使用,因为虽然事件已经发生过一次,但是线程标识符,连续点矢量和条件仍然存储在端口22的TID,VECTOR,CTRL和DATA寄存器38中。因此,如果线程需要重复使用事件,端口寄存器38不需要重复写入,相反,端口的启用标记39能够简单地被再次有效,以及/或者线程的状态寄存器SR中EE标记可再次设置为事件启用的。另一个等待指令将暂停等待同一事件再次发生的线程。
而且,使用连续点矢量允许每个线程启用多个事件。也就是说,给定的线程可通过将连续点矢量发送到一个端口22a而在该端口建立一个事件,通过将不同的连续点矢量发送到另一个端口22b而在该端口建立另一个事件,如此类推。线程也可通过分别为各端口使不同的启用标记39有效或者无效来逐个启用或禁止各个事件。等待指令将使线程暂停等待任何启用的事件。
与事件相比,使用基本I/O操作,线程调度器18不传输连续点矢量给VECTOR寄存器,且不使用端口的启用标记39或状态寄存器SR中的EE标记。相反,等待指令仅留在指令缓冲器19中,且如果需要,根据就绪标记37的指示,仅将执行中止以等待输入或端口输出的可用性。在实施例中,仅要求TID寄存器按照基本I/O进行调度。基本I/O可以使用或不使用CTRL和DATA寄存器中的条件。如果不使用这样的条件,端口一准备好I/O就会完成。
还须注意的是,一旦在事件之后恢复执行线程,则当然随后可执行基本I/O操作。相反,一旦线程在基本I/O后继续,则其随后可包括事件操作。任何这类事件和I/O都可包括在线程中。例如,基本I/O操作可在两个基于事件的等待操作间交叉进行,同时事件被禁止(即,端口启用标记39和/或状态寄存器的EE标记被无效),但事件矢量和条件仍然留作在寄存器38中设置。也就是说,事件可在完成第一个基于事件的等待操作后禁止,基本I/O随后用同一端口执行,以及然后同一事件被再次启用用于在第二个基于事件的等待操作。如上所述,基本I/O操作中止和解除中止该线程,但不影响端口的启用标记39或状态寄存器中的EE标记,也不发送控制到事件矢量。
下面参考图6的流程图说明线程调度器和两个示例性端口的操作。在步骤100,执行单元16在线程调度器18的指导下开始执行第一和第二线程。在步骤102,线程调度器遇到第一线程内以事件为条件的部分代码,例如接收端口22a处的某些特殊信号。在步骤104,线程调度器发送第一线程的线程标识符(TID)和连续点矢量(VECTOR)到端口22a,该连续点矢量指定一旦检测到事件则线程的执行应该在程序中的哪个点继续,以及任何需要的条件控制信息(CTRL)和关联的数据(DATA)。例如,数据可以是指令预期在端口接收的信号的值。在步骤104,线程调度器还可设置第一端口的启用标记39以及将第一线程的状态寄存器SR设置为事件启用的。
在步骤106,端口22a从线程调度器18接收该信息。在步骤108,线程调度器18暂停第一线程的执行。在步骤110,端口22a开始监视端口处的活动。
在步骤112,线程调度器18确定第二线程仍未完成(outstanding)且执行单元16继续在线程调度器18的指导下执行第二线程。在步骤114,线程调度器18遇到以事件为条件的部分代码。在步骤116,线程调度器18发送线程标识符和连续点矢量以及任何其他要求的条件信息至端口22b。在步骤116,线程调度器还可设置第二端口的启用标记39以及将第二线程的第二状态寄存器设置为事件启用的。在步骤118,端口22b接收该信息。在步骤120,线程调度器暂停第二线程的执行。在步骤122,端口22b开始监视发生在端口的活动。
在步骤124,线程调度器确定当前不再有需要调度的未完成的线程,以及系统关闭除端口22a和22b以外的所有组件。在步骤128,端口22a检测到相关事件,例如收到存储在DATA寄存器中的信号,以及因此返回线程标识符(TID)以及续点矢量(VECTOR)(以及将第一线程的状态寄存器设置为事件禁止)。在步骤126,线程调度器18接收返回的标识符。现在执行可以继续,那么在步骤130,系统再次上电。在步骤134,执行单元16在线程调度器18的指导下完成第一线程的执行。在步骤138,端口22b为第二线程检测相关事件以及返回其线程标识符以及连续点矢量(以及将第二线程的状态寄存器设置为事件禁止)。在步骤136,线程调度器18接收返回的信息,在步骤138,执行单元16在线程调度器18的控制下完成第二线程的执行。注意在步骤134和136间可以有额外的断电步骤。
如图7所示,本发明的原理也可扩展到线程间的通信,或更精确地,线程寄存器组20(其存储表示线程的信息)间的通信。为了说明的目的,仅4个线程寄存器组201到204在图7中示出,每个存储各线程T1到T4的信息。每个线程寄存器组都通过互连系统40连接到各其他组,互连系统用于建立至少一个通道用于直接在至少两个线程寄存器组20间发送数据。通道优选地用来与操作数寄存器OP交换数据,但原则上用来与(诸如状态寄存器SR的)其他类型的寄存器交换信息。线程调度器18可基于发生在通道上的活动以如上述的与端口相关的类似方式来调度线程。
如图7A所示,每个通道末端42像一对端口,具有输入缓冲器44和输出缓冲器46。类似于端口22,每个通道输入缓冲器44和输出缓冲器46可具有活动处理逻辑36’用于监视发生在通道上的活动以及通过至少一个就绪标记37’来发信号告知某些活动的发生。通道末端可检测的潜在活动包括:数据已经输入到通道,或通道已经可用于输出。如果在通道太满而不能提取数据时执行输出指令,则执行指令的线程被中止,以及在通道中有足够空间用于指令成功完成时再开始。类似地,当指令被执行且没有足够的数据可用时,线程被中止以及当有足够数据可用时再开始。
再如端口22一样,为了有助于对这样的活动的检测,每个通道末端与寄存器38’关联。这些寄存器包括用于存储相关线程标识的线程标识符(TID)寄存器,以及用于存储根据事件的发生执行应该在程序的哪个位置继续的连续点矢量(VECTOR)寄存器。这些TID和VECTOR寄存器可由线程调度器18以及执行单元16使用从而以与端口22相同的方式调度线程。VECTOR寄存器允许通道生成事件以及中断。通道末端还具有启用标记39’用于启用通道以生成事件。在实施例中,通道末端42可以不具有CTRL和DATA寄存器。
同一通道末端42还可以用来将数据从线程寄存器经端口22传送到外部环境。也就是说,执行单元16可经通道末端42拾取寄存器20的内容并经端口22将其直接传出;相反,执行单元16还可以从端口22接收输入以及经通道末端42将其直接发送给寄存器20。因此,如果按照本发明的两个或多个接口处理器连接到一起,例如图2A中所示,通道也可在这些处理器间建立。在处理器间系统内,每个处理器可以通过许多双向物理链路204与系统互连相接口,这允许与其他处理器同时连接。
这里使用的包括端口、通道以及活动的其他源的总术语是“资源”。
接口处理器可支持几种编程方法,这是由于其基于线程的结构。接口处理器可以作为执行标准输入和输出的单个常规处理器,或可编程为数百个通信组件并行阵列的一部分。本发明提供了支持这些可选做法的指令集合。指令集合包括支持初始化、终止、开始和停止线程以及提供输入/输出通信的特殊指令。输入和输出指令允许与外部设备非常快的通信。它们支持高速,低时延输入和输出以及高级协同编程技术。这里它们用于处理端口活动,这将在下面更充分地讨论,其中说明了用于实施本发明的示例指令。
首先为使用GETR指令的线程预留资源,GETR指令指定了所要求的资源类型,并可用FREER指令再次释放。
端口可用于输入或输出模式。在输入模式中,条件可用来过滤发送到线程的数据。如下面所述,在数据可用时,端口可用来生成事件或中断。这允许线程监视几个端口,仅为就绪的端口服务。然后一旦端口就绪,输入和输出指令,IN和OUT可用来发送数据进出端口。在该情形中,IN指令输入以及零扩展(zero-extends)n位端口中n个最不重要的位,OUT指令输出该n个最不重要的位。
两个另外的指令,INSHR和OUTSHR优化数据传输。INSHR指令将寄存器内容向右移n位,用从n位端口输入的数据填补最左边n位。OUTSHR指令输出数据的n个最不重要的位至n位端口以及将寄存器内容向右移n位。
OUTSHR port,s   ports[bits 0 for width(port)];从其输出
                 s←s>>width(port)      端口和移位
INSHR port,s    s←s>>width(d);       移位和输入
ports[bits(bitsperword-width(d))for width(d)]     来自端口
其中表示输入,表示输出。
端口在可使用前必须被配置。端口是用SETC指令配置的,SETC指令被用来定义端口的几种独立设置。每种设置都具有缺省模式,且仅在需要不同模式时要配置。
SETC port,mode port[ctrl]←mode      设置端口控制
下面说明SETC模式设置的效果。每种设置的首项是缺省模式。
模式    效果
OFF     端口不有效,针脚高阻抗
ON      有效
IN      端口是输入
OUT     端口是输出(但输入返回当前针脚值(pin value))
EVENT       端口将引起事件
INTERRUPT   端口将唤醒(raise)中断
DRIVE       针脚被高电平和低电平驱动
PULLDOWN    针脚下拉电平用于0位,否则为高阻抗
PULLUP      针脚上拉电平为用于1位,否则为高阻抗
UNCOND      端口始终就绪,输入立即完成
EQUAL       当端口值等于其DATA值时端口就绪
NE          当端口值不同于其DATA值时端口就绪
TRANSITION  当端口值向其DATA值改变时端口就绪
GR          当端口值大于其DATA值时端口就绪
LS          当端口值小于其DATA值时端口就绪
DRIVE,PULLDOWN和PULLUP模式仅在端口方向为OUT时相关。TRANSITION条件仅对1位端口相关,以及GR和LS条件仅对1位以上的端口相关。
每个端口具有就绪位37,其用来控制通过端口的数据流,以及定义端口是否能够完成输入或输出指令。根据端口配置以不同方式设置就绪位。在SETC,SETD或SETV中任意指令被执行时,就绪位被清除。
输入模式中端口可配置为执行条件输入。条件过滤输入数据,以便仅使符合条件的数据返回给程序。当条件被设定时,IN和INSHR指令将仅在端口就绪时完成。如上所述,在未就绪端口上执行输入指令将中止线程。在就绪时,端口设定其就绪位,这通过信号告知线程调度器。线程继续以及再执行输入指令。这次端口是就绪的,数据被返回以及就绪位37被清除。
一旦设定端口就绪位,满足条件的数据值被捕获,因此软件获得满足条件的值,即使端口上的值随后改变。当IN或INSHR指令被执行以及就绪位被设定时,则返回数据以及清除就绪位。如果就绪位没有被设定,则线程被中止直到就绪位被设定。如果条件被设定,则数据与条件比较,以及就绪位仅在满足条件时设定。
在执行OUT或OUTSHR指令时,如果就绪位被清除,则端口提取数据以及就绪位被设定。如果就绪位被设定,则线程中止直到就绪位被端口清除。
为了在两个线程间通信,需要分配两个通道末端,每个线程一个。这是用GETR CHAN指令执行的。两个线程可使用资源标识符通过使用输出和输入指令来传输数据字:
OUT
IN
如果输出指令是在通道太满而不能提取数据时执行的,则执行指令的线程被中止。当通道中有足够空间用于成功完成指令时,继续执行指令。类似地,当输入指令被执行以及有足够的可用数据时,线程暂停以及当有足够数据可用时重新开始执行。当不再需要时,可用FREE CHAN指令释放通道。否则通道可用于其他信息。
事件和中断允许资源(端口和通道)自动将控制发送到预定的事件控制器(handler)。线程接受事件或中断的能力是由保存在线程状态寄存器SR中的信息来控制的(参看图4),以及可明确地用TSE和TSD指令控制。该信息包括事件启用标记(EE)和中断启用标记(IE)。
TSE s SR←SR∨s        线程状态启用
TSD s SR←SR∧s   线程状态禁止
这些指令的操作数应是以下之一:
EE    启用或禁止事件
IE    启用或禁止中断
事件是在其被建立的同一范围内被处理。因此,对于所有线程的状态都有效的事件,允许线程对事件快速反应。线程可以使用引起事件同时留下某些或所有事件信息不变的端口执行输入和输出操作。这允许线程完成处理事件并立即等待另一个类似事件。
事件控制器的程序位置必须在用SETV指令启用事件前设定。端口具有确定何时发生事件的条件,这些是用SETC和SETD指令设定的。通道只要含足够的数据或具有接受要输出数据的空间就被视为就绪。
可以用事件启用无条件(EEU)指令来启用特定端口或通道的事件生成,以及使用事件禁止无条件(EDU)指令将其禁止。如果事件条件操作数为真,则事件启用真(EET)指令启用事件,否则禁止事件;相反如果事件条件操作数为假,则事件启用假(EEF)指令启用事件,否则禁止事件。这些指令被用来优化受保护输入(guarded inputs)的执行。下面是配置端口上事件的某些示例指令格式,但可以理解同样的指令可针对通道使用。
SETV port,v port[vector]←v    设定事件矢量
SETD port,d port[data]←d      设定事件数据
SETC port,c port[ctrl]←c      设定事件控制
EET port,b port[enable]←b;port[tid]←thread    事件启用真
EEF port,b port[enable]←b;port[tid]←thread  事件启用假
EDU port port[enable]←false;port[tid]←thread   事件禁止
EEU port port[enable]←true;port[tid]←thread    事件启用
已经启用一个或多个资源上的事件后,线程可使用WAITEU指令等待至少一个事件。这可导致事件立即发生,且控制被发送到事件控制器,该事件控制器由相应事件矢量指定,且事件是通过清除EE(事件启用)标记禁止的。可选地,线程可暂停,直到事件发生——在该情形中,EE标记将在事件发生时被清除,以及线程继续执行。
WAITET b if b then SR[EE]←true    如果真则事件等待
WAITEF b ifb then SR[EE]←true     如果假则事件等等
WAITEU SR[EE]←true                事件等待
CLRE   SR[EE]←false;             禁止所有事件
对所有端口                         对线程
if port[tid]=thread then port[enable]←false
为了优化重复等待一个或多个事件直到条件发生的常见情形,提供了事件等待指令的条件形式。WAITET指令仅在其条件操作数为真时等待,且WAITEF仅在其条件操作数为假时等待。
线程启用的所有事件可用单个CLRE指令禁止。这会禁止具有由线程所启用的事件的所有端口中生成事件。CLRE指令也清除线程状态寄存器中的事件启用状态。
为了优化线程对高优先级资源的响应性,在随后开始启用端口和/或通道以及使用一个事件等待指令前,TSE EE指令可用来首先启用线程上事件。这样,处理器可按照优先级顺序扫描资源。这可以使事件在被启用时立即被处理。
与事件相比,中断不是在当前范围内处理的,因此当前PC和SR(和潜在的某些或所有其他寄存器)必须在中断控制器执行前被保存。一旦资源r生成中断,自动发生以下动作:
SAVEPC←PC;
SAVESR←SR;
SR[EE]←false;
SR[IE]←false;
PC←r[vector]
在控制器完成时,中断的线程的执行可由RFINT指令执行。
RFINT PC←SAVEPC;从中断返回
SR←SAVESR
当线程被暂停以等待事件时,一个中断可中断线程。
下面的例子示出了指令是如何被线程用来执行输入,输出和逻辑操作的。在例子中,使用下面的指令:
LDFI:加载指令地址到寄存器中
LDI:加载常数值到寄存器中
EQI:如果寄存器值等于常数,则产生布尔(Boolean)(真)值
OR:产生两个寄存器值的逻辑或(OR)
ADD:将两个寄存器值相加
ADDI:将常数加到寄存器值
SHL:向左移位寄存器内容
BBF:如果布尔值为假,则跳转到程序中另一个点
OUT:输出数据
下面示出从引脚串行输入8位字节的示例代码。当在第二端口从外部时钟接收的信号从0变为1(表示应提取数据)时,数据的每个位从第一端口输入。在高级语言中,该操作看起来像这样:
PROC inbyte(clock,data)
VAR byte;
{FOR n=0 FOR 8
   WHEN clock?TO 1 DO{data?bit;byte=(byte<<1)+b};
RETURN byte
}
下面示出该过程的指令级程序。
SETC    clock,TRANSITION
SETD    clock,1
LDI     byte,0
LDI     count,0
loop:
IN      clock,c
IN      data,bit
SHL     byte,byte,data
ADD     byte,byte,bit
ADDI    count,count,1
EQI     go,count,8
BBF    go,Loop
通过将每个代码序列分配给其自身线程,可以同时执行两个或多个这类代码序列。
下面示出示例代码,使用部分上述指令执行NAND类型的进程,该类型的进程每当两个输入x和y中的一个改变状态时醒来(wake up)。高级代码是:
PROC nand(x,y,z)IS
WHILE TRUE
{WHEN x?TO notx DO{notx:=NOT notx;z!(notx ORnoty)}
|WHEN y?TO noty DO{noty:=NOT noty;z!(notx ORnoty)}
}
在低级代码中,该进程包括分别用矢量“xv”和“yv”初始化两个端口x和y的单个线程,并启用这些端口以生成事件。相应指令级程序如下:
nand:
LDI    notx,1
LDI    noty,1
SETC    x,TRANSITION
SETD    x,notx
SETC    y,TRANSITION
SETD    y,noty
LDFI    temp,xv
SETV    temp,x
LDFI    temp,yv
SETV    temp,y
EEU     x
EEU     y
WAIT
xv:
EQI     notx,notx,0
SETD    x,notx
OR      temp,notx,noty
OUT     z,temp
WAIT
yv:
EQI     noty,noty,0
SETD    y,noty
OR      temp,notx,noty
OUT     z,temp
WAIT
操作中,x输入改变或y输入改变,以及控制发送到xv或yv。在任一情形中,响应代码(response code)执行5个指令,然后等待下一个输入状态变化。从输入变化到输出变化的等待时间可小于约10个周期。1GHz处理器可模拟100MHz逻辑。
作为另一个例子,下面示出执行D型触发器逻辑的进程,该进程每当输入改变状态(但仅在由外部时钟计时时改变输出)时醒来。高级程序是:
PROC dtype(d,ck,q)IS
WHILE TRUE
{WHEN d?TO notd DO notd:=NOT notd
|WHEN ck?TO TRUE DO q!NOT notd
}
相应指令级程序是:
dtype:
IN      d,temp
EQI     temp,temp,0
SETC    d,TRANSITION
SETD    d,temp
SETC    ck TRANSITION
LDI     temp,1
SETD    ck,temp
LDFI    temp,dv
SETV    d,temp
LDFI    temp,ckv
SETV    ck,ckv
EEU     d
EEU     ck
WAIT
dv:
IN      d,temp
SETD    d,temp
WAIT
ckv:
EQI    temp,notd,0
OUT    q,temp
WAIT
操作中,要么d-input改变,要么ck-input改变。在任一情形中,响应代码执行3条指令,然后等待下一输入状态变化。从输入变化到输出变化的等待时间可小于约10个周期。此外,1GHz处理器可模拟100MHz逻辑。
下面给出一些更复杂逻辑的例子。类似于D型,其跟踪输入数据(可以是几个位宽),以便在外部时钟到达时建立该逻辑(另一种方式仅读取时钟数据,该情形中数据可有非零保存时间)。下面的例子中通过查询表以及时钟输出计算了输出。可计算输入的更复杂函数,以及这会在下面指示的点潜在地增加更多指令。然而,注意到处理器可以只用几条指令来计算某些非常复杂的函数(相对小LUT)。高级代码是:
PROC lookup(d,ck,q)IS
WHILE TRUE
{WHEN d?x:x!=lastx DO lastx:=x
|WHEN ck?TO TRUE DO q!lookup[lastx]
}
相应指令级程序是:
logic:
IN      d,data
SETC    d,NE
SETD    d,data
SETC    ck,TRANSITION
LDI     temp,1
SETD    ck,temp
LDFI    temp,dv
SETV    d,temp
LDFI    temp,ckv
SETV    ck,temp
EEU     d
EEU     ck
WAIT
dv:
IN      d,data
SETD    d,data
WAIT
ckv:
LDW     temp,lookup,data//将其取代从而改变函数
OUT     temp,q
WAIT
在操作中,要么d-input改变,要么ck-input改变。在任一情形中,响应代码执行3条指令,然后等待下一输入状态变化。从输入变化到输出变化的等待时间可小于约10周期。此外,1GHz处理器可模拟100MHz逻辑。
还需注意的是,上面的例子展示了给定线程如何处理多个活动,诸如多个事件。
与事件相比,中断要求状态保存在中断控制器的入口以及在出口恢复,为了使寄存器在控制器内可用。此外,控制器通常需要从其最后一次进入处开始检索状态以及将其保存以便下一次进入。中断控制器的简单例子在下面示出。其使用某些额外指令:
LDWSP  用栈指针从存储器加载值
STWSP  用栈指针将值存储在存储器中
LDWDP  用数据指针从存储器加载值
STWDP  用数据指针将值存储在存储器中
EXTSP  用来扩展堆栈从而为新值留出空间
LDAWSP 用来从堆栈中丢弃值
该例子输入数据字节,一次一位;与上面使用事件的例子相比,该例子使用中断控制器。高级程序是:
PORT clock:INT,TRANSITION,1;
VAR byte;
VAR count;
byte:=0;
count:=0;
ENABLE clock;
//要中断的程序跟在此处之后
HANDLER inbyte()
{data?bit;byte:=(byte<<1)+bit;
count:=count+1;
IF count=8 THEN DISABLE clock
}
当端口被启用以生成中断时,每次外部时钟过渡到逻辑1时都进入中断控制器。控制器提取数据位并且形成字节。该字节与几个位输入一起存储在存储器中的位置上以及经数据指针进行存取。当8位已经输入时,控制器禁止另外的中断,以便字节准备好供程序使用。相应指令级程序为:
SETD    clock,1
SETC    clock,TRANSITION
SETC    clock,INT
LDI     r0,0
STWDP   r0,byte
STWDP   r0,n
EEU     clock
...//将被中断的程序
int://中断控制器
EXTSP   2
STWSP   R0,0
STWSP   R1,1
IN      clock,r0
IN     data,r0
LDWDP  r1,byte
SHL    byte,byte,1
ADD    byte,byte,r0
STWDP  r1,byte
LDWDP  r0,n
ADDI   r0,r0,1
STWDP  r0,n
EQI    r0,r0,8
EEF    clock,r0
LDWSP  R1,1
LDWSP  R0,0
LDAWSP 2
RFINT
从上面的说明和例子可以看出各端口的活动如何与各线程相关联,以及如何基于该活动引起的事件调度这些线程,有利地提供了可对外部激励快速响应的处理器。
可以理解上面的实施例仅以例子说明的。在其他实施例中,可根据所需芯片规范提供不同寄存器组和指令。在某些实施例中,线程标识符不必发送到端口,而是可保留线程调度器的责任或存储在其他地方。可选地,可以在端口为每个线程提供个别的就绪标记,以便线程标识符被发送到端口从而选择正确的就绪信号,但线程标识符不必在检测到活动后返回线程调度器。另外,条件和/或条件数据不必发送到端口。而是条件可在端口预配置以及/或者条件可在线程调度器或其他地方被评估。可以基于来自除了端口和通道的其他源的活动来调度线程。不同互连可提供在处理器不同组件之间。而且本发明不专用于具有移动应用处理器的移动终端。其他应用和配置对本领域技术人员是显然的。本发明的范围不是由所述实施例,而是由权利要求限定的。

Claims (50)

1.一种处理器,包括:
第一端口,可操作以基于所述第一端口处的第一活动生成第一指示;
第二端口,可操作以基于所述第二端口处的第二活动生成第二指示;
执行单元,被设置为执行多个线程;
各线程寄存器组,表示所述多个线程中的每个线程;以及
线程调度器,被连接至所述第一端口和所述第二端口,以接收所述指示,以及被设置为基于所述指示来调度所述多个线程用于由所述执行单元执行,所述调度包括暂停所述线程的执行直到收到相应指示;
其中,所述第一活动和所述第二活动中的每一个都与各个相应的线程相关联;
其中,所述线程调度器被设置为将第一线程标识符发送到与所述第一端口相关联的标识符寄存器,其中,所述第一线程标识符涉及暂停的等待所述第一活动的第一线程;并且所述第一指示包括所述第一线程标识符从与所述第一端口相关联的标识符寄存器到所述线程调度器的返回。
2.根据权利要求1所述的处理器,其中,所述线程调度器被设置为将第二线程标识符发送到与所述第二端口相关联的标识符寄存器,其中,所述第二线程标识符涉及等待所述第二活动的第二线程;并且所述第二指示包括所述第二线程标识符从与所述第二端口相关联的标识符寄存器到所述线程调度器的返回。
3.根据权利要求1所述的处理器,其中,一旦暂停的线程的所有线程标识符都已经被发送到与所述第一端口相关联的标识符寄存器,则所述处理器适于关闭所述执行单元、所述线程调度器以及时钟中的至少一个。
4.根据权利要求3所述的处理器,其中,一旦所述线程标识符中的至少一个从其相应端口返回,则所述处理器适于对所述执行单元、线程调度器和时钟中的至少一个上电。
5.根据权利要求1所述的处理器,其中,所述第一和第二端口中至少一个包括活动处理逻辑电路并且与至少一个用于存储条件的条件寄存器相关联,所述活动处理逻辑电路被设置为监视所述端口处的活动以及根据满足所述条件的所述活动来生成所述指示。
6.根据权利要求5所述的处理器,其中,所述执行单元被设置为将相应条件发送到每个条件寄存器。
7.根据权利要求1所述的处理器,还包括:程序存储器,通过总线连接到所述执行单元,其中,所述线程调度器通过至少一个与所述总线分离的连接,从所述第一和第二端口中的每个接收所述指示。
8.根据权利要求1所述的处理器,其中,所述线程调度器被设置为一旦暂停所述第一线程就将连续点矢量发送至与所述第一端口相关联的矢量寄存器;以及基于所述第一活动,所述连续点矢量被返回到所述执行单元。
9.根据权利要求8所述的处理器,其中,所述第一线程与来自多个端口的活动相关联,每个所述端口可操作以根据该活动生成相应指示,执行单元适于将多个连续点矢量中的每个发送到所述多个端口中的相应端口,根据相应活动返回相应连续点矢量;并且所述线程调度器适于暂停所述第一线程的执行,直到接收到所述相应指示中的至少一个。
10.根据权利要求9所述的处理器,其中,端口事件启用标记与所述第一端口相关联,并且所述线程调度器适于通过使所述端口事件启用标记有效来启用所述第一活动,从而触发所述调度,以及通过使所述端口事件启用标记无效来禁止所述第一活动触发所述调度。
11.根据权利要求10所述的处理器,其中,线程事件启用标记与所述第一线程相关联;所述线程调度器适于通过使所述线程事件启用标记有效来根据所述第一活动使所述第一线程能够被调度,以及通过使所述线程事件启用标记无效来根据所述第一活动禁止所述第一线程被调度。
12.根据权利要求11所述的处理器,其中,所述端口事件启用标记和所述线程事件启用标记中的至少一个通过所述第一活动的发生而被自动无效。
13.根据权利要求11所述的处理器,其中,所述线程调度器适于暂停第一线程的执行,其中所述第一线程等待来自第三端口的第三活动的第三指示,同时所述端口事件启用标记和所述线程事件启用标记中的至少一个被无效。
14.根据权利要求11至13中的任一项所述的处理器,其中,多个相应端口事件启用标记与关联于所述第一线程的所述多个端口中的每个相关联;且所述线程调度器被设置为使所述线程事件启用标记有效以及随后使所述多个端口事件启用标记有效。
15.根据权利要求1所述的处理器,每个所述寄存器组都被分配用于存储涉及所述多个线程中相应一个线程的信息。
16.根据权利要求1所述的处理器,其中,所述处理器在芯片上实现,并且所述第一和第二端口中的至少一个是用于与所述芯片上的另一个处理器通信的内部端口。
17.根据权利要求1所述的处理器,其中,所述处理器在芯片上实现,并且所述第一和第二端口中至少一个是用于与所述芯片外部的设备通信的外部端口。
18.根据权利要求17所述的处理器,其中至少一个外部端口是引脚端口,其用于检测所述芯片的物理边界的引脚处出现的信号上升沿或下降沿。
19.根据权利要求17所述的处理器,其中,至少一个外部端口是数据端口,所述数据端口用于处理所述端口处的一个或多个位的瞬时逻辑电平。
20.根据权利要求1所述的处理器,其中,所述执行单元适于识别并执行用于暂停和运行线程的专用指令。
21.根据权利要求15所述的处理器,还包括在至少两个所述线程寄存器组之间的至少一个通道,其中,所述线程调度器适于基于所述通道上出现的活动来调度线程。
22.根据权利要求1所述的处理器,其中,所述线程调度器额外地适于基于中断来调度线程。
23.根据权利要求22所述的处理器,其中,基于所述中断而调度的所述线程是所述第一线程,所述中断将暂停的所述第一线程中断。
24.根据权利要求1所述的处理器,其中,如果相关联的活动出现在取决于该活动的线程内的指令的执行时或执行之前,则所述线程调度器适于调度线程而无需暂停。
25.一种在具有第一端口和第二端口的处理器内调度多个线程用于执行的方法,所述方法包括:
使用用于每个线程的各线程寄存器组,表示所述多个线程中的每个线程;
将各相应线程与所述第一端口处的第一活动和所述第二端口处的第二活动相关联;
根据所述第一活动在所述第一端口处生成第一指示;
根据所述第二活动在所述第二端口处生成第二指示;以及
基于所述指示调度所述线程用于执行,所述调度包括暂停线程的执行直到接收到相应指示;以及
通过根据所述调度执行所述线程而运行所述线程;
其中,所述方法还包括将与暂停的等待所述第一活动的第一线程相关的第一线程标识符发送至与所述第一端口相关联的标识符寄存器;并且所述第一指示包括所述第一线程标识符从与所述第一端口相关联的标识符寄存器到线程调度器的返回。
26.根据权利要求25所述的方法,还包括将与暂停的等待所述第二活动的第二线程相关的第二线程标识符发送至与所述第二端口相关联的标识符寄存器;并且所述第二指示包括所述第二线程标识符从与所述第二端口相关联的标识符寄存器到所述线程调度器的返回。
27.根据权利要求26所述的方法,还包括:
一旦被中止的线程的所有线程标识符都已经发送到与所述第一端口相关联的标识符寄存器,则对以下中的至少一个断电:用于执行所述线程的执行单元,用于调度所述线程的线程调度器,以及时钟。
28.根据权利要求27所述的方法,还包括:
一旦从相应端口返回至少一个所述线程标识符,则对所述执行单元、线程调度器以及时钟中的至少一个上电。
29.根据权利要求25所述的方法,其中,所述第一和第二端口中的至少一个包括活动处理逻辑电路,并且与至少一个用于存储条件的条件寄存器相关联,所述方法还包括使用所述活动处理逻辑电路来监视所述端口处的活动以及根据满足所述条件的所述活动生成所述指示。
30.根据权利要求29所述的方法,还包括将相应条件发送至每个条件寄存器。
31.根据权利要求25所述的方法,其中,所述处理器包括通过总线连接到所述执行单元的存储器,以及所述方法还包括通过至少一条与所述总线分离的连接从所述第一和第二端口中的每一个发送所述指示。
32.根据权利要求25所述的方法,还包括一旦暂停所述第一线程,则将连续点矢量发送到与所述第一端口相关联的矢量寄存器;以及根据所述第一活动返回所述连续点矢量。
33.根据权利要求32所述的方法,包括将所述第一线程与来自多个端口的活动相关联,根据该活动生成相应指示,以及将多个连续点矢量中的每个发送到所述多个端口中的相应一个,根据相应活动返回相应连续点矢量,其中,所述调度包括暂停所述第一线程的执行,直到接收到所述相应指示中的至少一个。
34.根据权利要求32所述的方法,包括通过使端口事件启用标记有效来启用所述第一活动以触发所述调度,以及通过使所述端口事件启用标记无效来禁止所述第一活动触发所述调度。
35.根据权利要求34所述的方法,包括通过使线程事件启用标记有效来根据所述第一活动使所述第一线程能够被调度,以及通过使所述线程事件启用标记无效来根据所述第一活动禁止所述第一线程被调度。
36.根据权利要求35所述的方法,包括通过所述第一活动的发生自动使所述端口事件启用标记和所述线程事件启用标记中的至少一个无效。
37.根据权利要求35所述的方法,还包括:
在使所述端口事件启用标记和所述线程事件启用标记中至少一个无效后,恢复所述第一线程的执行以及随后暂停所述第一线程的执行,该第一线程等待来自第三端口的第三活动的第三指示,同时使所述端口事件启用标记和所述线程事件启用标记中至少一个被无效;
使所述端口事件启用标记和所述线程事件启用标记中的至少一个再次有效;以及
在使所述端口事件启用标记和所述线程事件启用标记中至少一个再次有效之后,暂停正在等待所述第一活动再次发生的所述线程的执行。
38.根据权利要求35至37中任一项所述的方法,其中,多个相应端口事件启用标记与关联于所述第一线程的所述多个端口中的每一个相关联;以及所述方法包括使所述线程事件启用标记有效以及随后使所述多个端口事件启用标记有效。
39.根据权利要求25所述的方法,其中,将表示每个所述线程的信息存储在相应线程寄存器组中。
40.根据权利要求25所述的方法,其中,所述处理器在芯片上实现,以及所述第一和第二端口中的至少一个是用于与所述芯片上另一个处理器进行通信的内部端口。
41.根据权利要求25所述的方法,其中,所述处理器在芯片上实现,以及所述第一和第二端口中的至少一个是用于与所述芯片外的设备进行通信的外部端口。
42.根据权利要求41所述的方法,其中,至少一个外部端口是用于检测所述芯片的物理边界的引脚处出现的信号上升沿或信号下降沿的引脚端口。
43.根据权利要求41所述的方法,其中,至少一个外部端口是数据端口,用于处理在所述端口处的一个或多个位的瞬时逻辑电平。
44.根据权利要求25所述的方法,还包括执行用于暂停和运行线程的专用指令。
45.根据权利要求39所述的方法,其中,所述处理器还包括在至少两个所述寄存器组之间的至少一个通道,以及所述方法包括基于所述通道上发生的活动来调度线程。
46.根据权利要求25所述的方法,还包括基于中断来调度线程。
47.根据权利要求46所述的方法,其中,基于所述中断而调度的所述线程是所述第一线程,以及所述中断将被暂停的所述第一线程中断。
48.根据权利要求25所述的方法,如果相关联的活动发生在取决于该活动的线程内的指令执行时或执行之前,则调度线程而无需暂停。
49.一种移动终端,具有移动应用处理器,至少一个外围设备,以及连接在所述移动应用处理器与所述外围设备之间的接口处理器,所述接口处理器包括:
第一端口,可操作以根据所述第一端口处的第一活动生成第一指示;
第二端口,可操作以根据所述第二端口处的第二活动生成第二指示;
执行单元,被设置为执行多个线程;
各组线程寄存器,表示所述多个线程中的每个线程;以及
线程调度器,被连接至所述第一端口和所述第二端口,以接收所述指示以及被设置为基于所述指示来调度所述多个线程用于由所述执行单元执行,所述调度包括暂停线程的执行直到接收到相应指示;
其中,所述第一活动和所述第二活动中的每个都与各相应线程相关联;
其中,所述线程调度器被设置为将第一线程标识符发送到与所述第一端口相关联的标识符寄存器,其中,所述第一线程标识符涉及暂停的等待所述第一活动的第一线程;并且所述第一指示包括所述第一线程标识符从与所述第一端口相关联的标识符寄存器到所述线程调度器的返回。
50.一种互连的处理器阵列,至少一个所述处理器包括:
第一端口,可操作以根据所述第一端口处的第一活动生成第一指示;
第二端口,可操作以根据所述第二端口处的第二活动生成第二指示;
执行单元,被设置为执行多个线程;
各组线程寄存器,表示所述多个线程中的每个线程;以及
线程调度器,被连接至所述第一端口和所述第二端口,以接收所述指示,以及被设置为基于所述指示调度所述多个线程用于由所述执行单元执行,所述调度包括暂停线程的执行直到接收到相应指示;
其中,所述第一活动和所述第二活动中的每个都与各相应线程相关联;以及
所述第一和第二端口中的至少一个将所述至少一个处理器与阵列中另一个处理器相连接;以及
其中,所述线程调度器被设置为将第一线程标识符发送到与所述第一端口相关联的标识符寄存器,其中,所述第一线程标识符涉及暂停的等待所述第一活动的第一线程;并且所述第一指示包括所述第一线程标识符从与所述第一端口相关联的标识符寄存器到所述线程调度器的返回。
CN200880015942.XA 2007-03-14 2008-03-13 接口处理器 Active CN101681274B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/717,622 US8219789B2 (en) 2007-03-14 2007-03-14 Interface processor
US11/717,622 2007-03-14
PCT/GB2008/000870 WO2008110799A1 (en) 2007-03-14 2008-03-13 Interface processor

Publications (2)

Publication Number Publication Date
CN101681274A CN101681274A (zh) 2010-03-24
CN101681274B true CN101681274B (zh) 2014-12-17

Family

ID=39433789

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880015942.XA Active CN101681274B (zh) 2007-03-14 2008-03-13 接口处理器

Country Status (6)

Country Link
US (1) US8219789B2 (zh)
EP (1) EP2137616B1 (zh)
JP (1) JP5271287B2 (zh)
KR (1) KR101501181B1 (zh)
CN (1) CN101681274B (zh)
WO (1) WO2008110799A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5173714B2 (ja) 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
US20110173420A1 (en) * 2010-01-08 2011-07-14 International Business Machines Corporation Processor resume unit
US8447960B2 (en) * 2010-01-08 2013-05-21 International Business Machines Corporation Pausing and activating thread state upon pin assertion by external logic monitoring polling loop exit time condition
JP2014211890A (ja) * 2014-06-25 2014-11-13 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びその割り込み処理方法
CN110908491B (zh) * 2018-08-28 2023-08-08 上海忆芯实业有限公司 功耗控制方法、控制部件及其电子系统
US11288072B2 (en) 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5515538A (en) * 1992-05-29 1996-05-07 Sun Microsystems, Inc. Apparatus and method for interrupt handling in a multi-threaded operating system kernel
US5944816A (en) * 1996-05-17 1999-08-31 Advanced Micro Devices, Inc. Microprocessor configured to execute multiple threads including interrupt service routines
US6985431B1 (en) * 1999-08-27 2006-01-10 International Business Machines Corporation Network switch and components and method of operation
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
US6976095B1 (en) * 1999-12-30 2005-12-13 Intel Corporation Port blocking technique for maintaining receive packet ordering for a multiple ethernet port switch
US6799317B1 (en) * 2000-06-27 2004-09-28 International Business Machines Corporation Interrupt mechanism for shared memory message passing
US20020091956A1 (en) * 2000-11-17 2002-07-11 Potter Scott T. Methods and systems for reducing power consumption in computer data communications
JP3698987B2 (ja) * 2000-12-18 2005-09-21 エヌイーシーコンピュータテクノ株式会社 バッファ制御装置、汎用ポート制御装置、入出力システム、情報処理装置
US20020161957A1 (en) * 2001-02-09 2002-10-31 Guillaume Comeau Methods and systems for handling interrupts
US20030065741A1 (en) * 2001-09-29 2003-04-03 Hahn Vo Concurrent bidirectional network communication utilizing send and receive threads
JP2003167748A (ja) * 2001-11-30 2003-06-13 Fujitsu Ltd マルチスレッド計算機
KR100429543B1 (ko) * 2002-05-25 2004-04-29 삼성전자주식회사 네트워크 프로세서에서 다양한 개수의 포트들을 처리하기위한 방법
JP2004220070A (ja) * 2003-01-09 2004-08-05 Japan Science & Technology Agency コンテキスト切り替え方法及び装置、中央演算装置、コンテキスト切り替えプログラム及びそれを記憶したコンピュータ読み取り可能な記憶媒体
US7496915B2 (en) * 2003-04-24 2009-02-24 International Business Machines Corporation Dynamic switching of multithreaded processor between single threaded and simultaneous multithreaded modes
US7350060B2 (en) * 2003-04-24 2008-03-25 International Business Machines Corporation Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor
JP4740851B2 (ja) * 2003-08-28 2011-08-03 ミップス テクノロジーズ インコーポレイテッド 仮想プロセッサリソースの動的構成のための機構体
US7203100B2 (en) * 2004-11-01 2007-04-10 Sun Mircosystems, Inc. Efficient implementation of a read scheme for multi-threaded register file
US7149832B2 (en) * 2004-11-10 2006-12-12 Microsoft Corporation System and method for interrupt handling
US8745627B2 (en) * 2005-06-27 2014-06-03 Qualcomm Incorporated System and method of controlling power in a multi-threaded processor
US8074026B2 (en) * 2006-05-10 2011-12-06 Intel Corporation Scatter-gather intelligent memory architecture for unstructured streaming data on multiprocessor systems

Also Published As

Publication number Publication date
CN101681274A (zh) 2010-03-24
EP2137616B1 (en) 2013-10-30
KR20090122992A (ko) 2009-12-01
JP2010521730A (ja) 2010-06-24
JP5271287B2 (ja) 2013-08-21
EP2137616A1 (en) 2009-12-30
US20080229311A1 (en) 2008-09-18
US8219789B2 (en) 2012-07-10
WO2008110799A1 (en) 2008-09-18
KR101501181B1 (ko) 2015-03-18

Similar Documents

Publication Publication Date Title
US10942737B2 (en) Method, device and system for control signalling in a data path module of a data stream processing engine
CN101681262B (zh) 用于执行线程的处理器及方法
US7613909B2 (en) Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
EP2165253B1 (en) Data transfer between thread register sets
CN101681274B (zh) 接口处理器
US9405552B2 (en) Method, device and system for controlling execution of an instruction sequence in a data stream accelerator
WO2015191358A1 (en) Systems and methods of managing processor device power consumption
JP2010525436A (ja) 時限ポート
EP2165265B1 (en) Processor communication tokens
JPH11509950A (ja) N本未満のi/oピンを伴うnビットのデータバス幅をもつマイクロコントローラ及びそのための方法
EP2137618B1 (en) Processor instruction set
EP2137617B1 (en) Processor instruction set
EP2188726B1 (en) Token protocol
JP2010521730A5 (zh)
EP2137613B1 (en) Processor register architecture
US9830154B2 (en) Method, apparatus and system for data stream processing with a programmable accelerator

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