CN101689157A - 定时端口 - Google Patents

定时端口 Download PDF

Info

Publication number
CN101689157A
CN101689157A CN200880020679A CN200880020679A CN101689157A CN 101689157 A CN101689157 A CN 101689157A CN 200880020679 A CN200880020679 A CN 200880020679A CN 200880020679 A CN200880020679 A CN 200880020679A CN 101689157 A CN101689157 A CN 101689157A
Authority
CN
China
Prior art keywords
port
thread
time value
processor
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
Application number
CN200880020679A
Other languages
English (en)
Other versions
CN101689157B (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 CN101689157A publication Critical patent/CN101689157A/zh
Application granted granted Critical
Publication of CN101689157B publication Critical patent/CN101689157B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Bus Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Microcomputers (AREA)
  • Information Transfer Systems (AREA)

Abstract

一种处理器,具有接口部分和内部环境。接口部分包括:至少一个端口,被布置为接收当前时间值;第一寄存器,与端口相关联并被布置为存储触发时间值;以及比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示此传送。内部环境包括:用于在至少一个端口与内部环境之间传送数据的执行单元;以及用于调度多个线程以便由执行单元执行的线程调度器,每个线程包括一系列指令。所述调度包括调度一个或多个所述线程以便根据就绪信号执行。

Description

定时端口
技术领域
本发明涉及具有至少一个定时端口的处理器,且具体涉及用于与其他处理器或外部装置连接的接口处理器。
背景技术
处理器设计者所面临的一个挑战是,处理希望与处理器通信的数量不断增加的外部装置。通常,这通过为处理器提供某种中断处理能力以便处理在与外部装置连接的端口处出现的活动来实现。越来越多地,在这些端口处使用更为复杂的接口逻辑(电路),以便例如在每个端口安排多个外部装置。
在许多不同情况中都需要接口连接。这里通过背景技术实例讨论的一种情况是移动应用处理。
图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)装置8l连接的连通控制器(connectivity controller)6e。接口控制器6通常经由总线3连接至CPU 4。系统还包括功率控制器10和无线处理器12。
注意,接口控制器6多少是示意性地示出的,但是通常代表某些类型的专用I/O逻辑或特定构造的端口。
按照惯例,采用中断(interrupt,中断信号)或通过轮询技术来实现外部接口。当采用中断时,外部的外围设备发出信号以告知处理器:其有数据准备输入至处理器或者其需要来自处理器的数据。当使用轮询技术时,处理器不断检查装置的状态,以判断其是否准备供应或接收数据。
执行应用处理器2(例如图1的应用处理器)的一种可能性是,使用专用集成电路(ASIC)微控制器。ASIC是硬连线的装置,其可能包括专用于特定应用并被最优化为适应此特定应用的微处理器。对于给定的功能,与其他选择相比,它们通常更便宜并且能耗更低。然而,它们的设计复杂,必须预先设计并且不能轻易地重新构造。
另一种可能性是使用现场可编程门阵列(FPGA)装置。FPGA是能够在制造之后“在现场”被构造的半导体装置。为了构造FPGA,首先,利用计算机例如通过绘制示意图或创建描述功能的文本文件来建模想要的逻辑功能。FPGA包括通过静态构造的互连来进行通信的查阅表阵列。用FPGA厂商提供的软件来编译计算机模型,这产生可被下载到FPGA查阅表中的二进制文件。这允许装置的制造商对FPGA进行改编以满足其自身的个性化需求。
在此实例中,接口控制器6用作FPGA。这具有这样的好处:移动电话制造商可购买普通的FPGA装置2,然后就地(即“在现场”)将其构造成专用于他们所期望的应用。然而,FPGA的缺点是,其比ASIC更贵、更慢并且能耗更高。
在替代实例中,可在FPGA中使用整个芯片2,或者,芯片2可以是通用处理器,在芯片2与各外围设备8之间连接有独立的FPGA芯片。然而,这些选择可能更为昂贵并且能耗更高——对于多数移动电话和其他消费装置都是限制的。
以ASIC的价格、速度、范围和能耗水平实现FPGA的可构造性将是有利的。实现此目的所涉及的一个具体挑战是,为处理器与其环境之间的交互作用提供适当的定时。
发明内容
根据本发明的一个方面,提供了一种具有接口部分和内部环境的处理器,其中,接口部分包括:至少一个端口,被布置为接收当前时间值;与所述端口相关联的第一寄存器,被布置为存储触发时间值;以及比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示此传送;并且其中,内部环境包括:用于在至少一个端口与内部环境之间传送数据的执行单元;以及用于调度由执行单元执行的多个线程的线程调度器(thread scheduler),每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行。
这有利地允许线程的调度与数据传送的定时紧密连接,从而提供对响应时间的精确控制,以输入和输出由那些线程处理的操作。
在实施方式中,线程调度器可被构造为保持一组可运行的线程,并且,并且由线程调度器实现的所述调度可包括通过将一线程从所述组去除而暂停(suspending)该线程。对于当要求快速反应时间时所使用的中断来说此暂停线程方法是优选的。使用暂停的线程,线程调度器可准备执行预期关联活动中的线程,这表示,处理器“开始”准备反应。相反地,使用中断,执行单元被来自外部装置的信号中断,同时运行一些可能不相关的代码。在中断的情况下,在中断起作用之前必须保存当前程序状态。因此,使用中断的反应时间非常慢。轮询技术的能效更差,因为需要不断询问和响应。
处理器可包括被布置为用于输出当前时间值的计数器,所述至少一个端口被布置为从计数器接收当前时间值。
处理器可包括多个端口和多个第一寄存器,每个第一寄存器与相应的端口相关联并被布置为用于存储相应的触发时间值,其中,由线程调度器实现的所述调度可包括调度一个或多个所述线程以便于根据就绪信号运行。
所述传送可包括输入操作,由此将数据从外部环境捕获至所述至少一个端口,并且所述改变可包括将所述就绪信号设置成第一状态,这指示出数据可输入至内部环境中。所述传送可包括输出操作,由此将数据从每个所述至少一个端口传送至外部环境,并且所述改变可包括将所述就绪信号设置成第二状态,这指示至少一个端口可用于与内部环境进行进一步的数据传送。
执行单元可适于执行将数据从端口输入至内部环境的输入指令,只要所述就绪信号中的相应一个处于第一状态,所述输入指令就是所述一个或多个相关联线程的顺序的组成指令(constituentinstruction)。执行单元可适于执行将数据从内部环境输出至端口的输出指令,只要所述就绪信号中的相应一个处于第二状态,所述输出指令就是所述一个或多个相关联线程的顺序的组成指令。
执行单元可适于在完成输入指令时将所述相应的就绪信号设置成第二状态。执行单元可适于在完成输出指令时将所述相应的就绪信号设置成第一状态。
由线程调度器实现的所述调度可包括,暂停输入指令线程的执行,直到相应的就绪信号被设置为所述第一状态为止。由线程调度器实现的所述调度可包括,暂停输出指令线程的执行,直到相应的就绪信号被设置为所述第二状态为止。
传送可包括输入操作和输出操作,并且执行单元可被布置为执行输入指令和输出指令。
执行单元可被构造为执行设置触发时间指令,其在所述第一寄存器的一个中存储触发时间值。
所述外部环境可包括容纳有所述处理器的集成电路的至少一个引脚。所述外部环境可包括位于容纳有所述处理器的集成电路上的另一处理器。端口与内部环境之间的数据传送可包括端口与执行单元之间的传送。内部环境可包括总线,并且端口与内部之间的数据传送可包括端口与总线之间的传送。内部可包括多组第二寄存器,每组第二寄存器存储与所述多个线程中的相应一个相关的信息,并且端口与内部环境之间的传送可包括端口与所述第二寄存器中的一个之间的传送。
所述至少一个端口可在时间戳模式中操作,从而端口使得时间戳与端口和外部环境之间的数据传送相关联。接口部分可包括与所述至少一个端口相关联的第三寄存器,时间戳的所述关联包括在执行加有时间戳的传送时在第三寄存器中存储当前时间值。执行单元可被构造为将时间戳从第三寄存器传送至与加有时间戳的传送相关联的线程的所述第二寄存器中的一个。
执行单元可被布置为用于读取与从端口输入的数据相关联的时间戳,并且将触发时间值设置为时间戳加上特定时间间隔,以便在间隔过去之后触发从端口至外部环境的数据输出。
处理器可包括至少一个定时器,该定时器被布置为将当前时间传送至执行单元。定时器可包括第四寄存器和比较逻辑电路,该第四寄存器被布置为存储唤醒时间值,该比较逻辑电路被构造为如果当前时间值与唤醒时间值匹配则产生指示;其中,由线程调度器实现的所述调度可包括调度定时线程的暂停运行,直到收到指示为止。执行单元可被构造为响应于指示从定时器中读取当前时间。
所述指示可包括被传送至线程调度器的线程标识符,线程标识符识别定时线程。所述指示可包括被传送至执行单元的连续点矢量,连续点矢量指定定时线程中将重新开始执行的点。执行单元可被构造为用于执行设置矢量指令,所述指令设置所述连续点矢量。
根据本发明的另一方面,提供了一种调度具有接口部分和内部环境的处理器中的线程的方法,接口部分包括至少一个端口和与所述端口相关联的第一寄存器,并且内部环境包括执行单元和线程调度器,本方法包括:在端口处接收当前时间值;在第一寄存器中存储触发时间值;以及将当前时间值与触发时间值进行比较,以检测当前时间值是否与触发时间值匹配;如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示传送;操作线程调度器以调度多个线程,以便由执行单元运行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行;以及操作执行单元,以在至少一个端口与内部环境之间传送数据。
根据本发明的另一方面,提供了一种具有移动应用处理器、至少一个外围设备、以及连接于移动应用处理器与外围设备之间的接口处理器的移动终端,接口处理器具有接口部分和内部环境,其中,接口部分包括:至少一个端口,被布置为接收当前时间值;第一寄存器,与所述端口相关联,被布置为存储触发时间值;以及比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与移动应用处理器或外围设备之间传送数据并改变就绪信号以指示此传送;并且其中,内部环境包括:用于在至少一个端口与内部环境之间传送数据的执行单元;以及用于调度由执行单元执行的多个线程的线程调度器,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行。
根据本发明的另一方面,提供了一种互连处理器阵列,所述处理器中的至少一个具有接口部分和内部环境,其中,接口部分包括:至少一个端口,被布置为接收当前时间值;第一寄存器,与所述端口相关联,被布置为存储触发时间值;以及比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与阵列中的另一处理器之间传送数据并改变就绪信号以指示此传送;并且其中,内部环境包括:用于在至少一个端口与内部环境之间传送数据的执行单元;以及用于调度由执行单元执行的多个线程的线程调度器,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行。
根据本发明的另一方面,提供了一种具有接口部分和内部环境的处理器,其中,接口部分包括:端口装置,被布置为接收当前时间值;寄存器装置,与所述端口装置相关联,用于存储触发时间值;以及比较装置,用于检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口装置与外部环境之间传送数据并改变就绪信号以指示此传送;并且其中,内部环境包括:用于在至少一个端口与内部环境之间传送数据的执行装置;以及用于调度由执行单元执行的多个线程的线程调度装置,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行。
根据本发明的另一方面,提供了一种用于调度具有接口部分和内部环境的处理器中的线程的计算机程序产品,接口部分包括至少一个端口和与所述端口相关联的第一寄存器,并且内部环境包括执行单元和线程调度器,所述程序包括在计算机上执行时运行以下步骤的代码:在端口处接收当前时间值;在第一寄存器中存储触发时间值;以及将当前时间值与触发时间值进行比较,以检测当前时间值是否与触发时间值匹配;如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示此传送;操作线程调度器以调度由执行单元执行的多个线程,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程,以便根据就绪信号运行;以及在至少一个端口与内部环境之间传送数据。
为了更好地理解本发明以及示出本发明如何实施,现在将通过实例参照相应附图说明。
附图说明
图1示出了本领域中已知的FPGA装置的实例应用,
图2示出了接口处理器的实例应用,
图2a示出了接口处理器的另一实例应用,
图3是接口处理器的架构的图示,
图4是定时端口的图示,
图5是线程寄存器组的图示,
图6是定时器的图示,
图7是示出了定时端口的操作的流程图;以及
图8是示出了定时器的操作的流程图。
具体实施方式
图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(该高性能互连支持芯片202上的处理器14之间的通信)和芯片间链路206,从而可用多个芯片轻松地构造系统。每个处理器14通过端口22连接至其芯片间链路206和高性能互连204。
以下更全面地讨论的接口处理器的重要特征是,其管理端口22处的活动的能力。每个接口处理器包括CPU、存储器和通信装置。为了允许CPU与端口之间的直接且作出响应的连通,每个处理器具有用于执行大量并发程序线程的硬件支持,每个线程都包括一系列指令,并且至少其中一部分专门负责处理端口处的活动。如下面将更全面地讨论的,硬件支持包括:
-用于每个线程的一组寄存器,
-动态地选择执行哪个线程的线程调度器,
-用于输入和输出的一组端口(端口22),
-用于使I/O与外部时域同步的一组时钟发生器,以及
-控制实时执行的一组定时器。
在每个处理器上使用一小组线程可用来允许与处理器处理的其他未决任务一起处理通信或输入/输出,并且通过允许一些线程继续而其他线程暂停与远程接口处理器之间的未决通信,来允许互连中的等待隐藏(latency hiding)。
图3示意性地示出了根据本发明的一个实施方式的接口处理器14的示例性架构。处理器14包括用于在线程调度器18的控制下执行指令的线程的执行单元16。处理器14还包括总线13、用于保存程序代码和其他数据的随机存取存储器(RAM)24,以及用于存储永久信息(例如,启动代码)的只读存储器(ROM)(未示出)。
线程调度器18动态地选择执行单元16应执行哪个线程。按惯例,线程调度器的功能将仅仅是从程序存储器中调度线程,以保持处理器被完全占用。然而,根据本发明,由线程调度器18实现的调度也涉及端口22处的活动。这方面应该注意的是,线程调度器可直接连接(coupled to)至端口22,以便当由于端口处的输入或输出活动而使得线程变得可运行时,将延迟最小化。
线程调度器18所考虑的m个线程中的每个线程由寄存器库20中的各组线程寄存器201...20m代表,线程调度器18可访问寄存器库20。还提供了指令缓冲器(INSTR)19,以在从存储器24取得的指令随后传入执行单元16之前暂时保存该指令。后面将讨论这些寄存器和缓冲器的细节。
在m个线程中,线程调度器18保持一组n个可运行的线程,该组线程被称为“运行”,优选地以循环方式依次从该组中提取指令。当线程不能继续时,通过将其从运行组中去除而暂停该线程。这样做的原因可以是,例如,因为该线程在等待以下类型活动中的一个或多个:
-在线程能够运行之前其寄存器被初始化,
-线程尝试从未就绪或没有可用数据的端口输入,
-线程尝试对未就绪或没有用于数据的空间的端口输出,
-线程运行了导致其等待一个或多个事件的指令,所述事件可能在端口准备好输入时产生。
注意,这里使用的术语“事件”指的是特殊类型的操作,其与基本的输入-输出操作略有不同。以下结合图4和图5讨论所述区别。
处理器还包括第一时钟发生器171,其输出第一时钟信号ck1形式的第一定时信号;多个第二时钟发生器172,每个第二时钟发生器分别输出第二时钟信号ck2、ck2’和ck2”形式的相应第二定时信号;以及第三时钟发生器173,其输出第三时钟信号ck3形式的第三定时信号。为了简化术语,端口22和第二时钟ck2、ck2’和ck2”可示意性地被认为是处理器的接口部分;而执行单元16、线程调度器18、第一时钟171、第三时钟173以及其他部件(例如,总线13和存储器24)可示意性地被认为是处理器的内部环境。与处理器相互作用的任何外部装置,实体或刺激因素(stimulus),均可被认为是外部环境的一部分。
第一和第三时钟发生器171和173优选是时钟脉冲源。第二时钟发生器172中的每个被布置为从第一时钟信号ck1、第三时钟信号ck3及通过一位端口接收的外部时钟信号中的任一个得到其相应的时钟信号ck2、ck2’和ck2”。第二时钟发生器172中的每个还具有八位除法器(divider),其用于通过特定因数可选地分割接收到的时钟信号。为了选择接收到的时钟信号,每个时钟发生器172包括源寄存器SID,其存储由该发生器使用的相应时钟脉冲源的标识符。开关箱56被布置为使得第一时钟信号ck1或外部时钟信号连接至相应的第二时钟发生器172。因此,第二时钟发生器172中的每个可具有不同的时钟脉冲源和/或除法因数(division factor)。
执行单元16和线程调度器18由第一时钟信号ck1计时。这意味着,以与第一时钟信号ck1合拍的方式依次从运行组中调度线程;并且,那些线程的指令从存储器24中被取出,被发至执行单元16并与第一时钟信号ck1合拍地执行。这些指令中的一些指令将包括输入和输出指令,从而,与第一时钟信号ck1合拍地执行内部与端口之间的数据传送。也就是说,由第一时钟信号ck1的边沿触发这些任务。
如果是在计时模式中,那么由所选择的第二时钟信号对每个端口22计时。可选择第二信号ck2、ck2’和ck2”中的任何一个,以通过开关箱52输出至任何端口22。为了便于选择,每个端口22与存储第二时钟发生器172之一的标识符的相应寄存器CKID 54相关。开关箱52被布置为将来自所标识的时钟发生器的第二时钟信号供应至相应端口。为了以下讨论的目的,将假设,选择第二时钟信号ck2为端口22计时。这意味着,数据以与第二时钟信号ck2合拍的方式在端口22与外部环境之间传送,并且还意味着以与第二时钟信号ck2合拍的方式用信号告知用于输入的数据的可用性和用于输出的端口的可用性。也就是说,由第二时钟信号ck2的边沿触发这些任务。以下结合图4更详细地讨论端口22的操作。
注意,当在时域之间传送数据时,将需要某种类型的同步化以避免亚稳定性,亚稳定性是当数据信号正在改变状态时如果不小心读取了该数据的话所出现的问题。用于避免亚稳定性的同步化技术在本领域中是非常公知的,在这里不再进一步讨论。
除了时钟发生器172以外,处理器14还包括由第一时钟信号ck1计时的计数器57。与简单地断断续续振荡的时钟信号不同,计数器输出的值在第一时钟信号ck1的多个循环上逐渐累加。因此,由此计数器57输出的值代表当前系统时间(tm),这是自计数器上一次被复位后所经过时间量的测量值。
连同该系统时间计数器57一起提供了多个定时器58。这些定时器58本身不计算时间值,而是每个定时器58可用来将时间值从计数器57传送至执行单元16(通过未示出的连接)。如果定时器处于无条件模式下,那么执行单元可通过定时器58简单地读取当前时间值tm。如果定时器58处于有条件模式下,那么只有当时间值处于存储于与该定时器相关的寄存器TIME59中的触发时间值之后时,执行单元才从定时器58读取该时间值。相应的线程可中止,直到触发时间值与当前时间值匹配为止。定时器也可用来产生事件,如下面结合图6所讨论的。
此外,时间计数器57可用来控制通过端口22输入和输出数据的定时。如果是在定时模式中,那么端口22通过特定时间的检测而触发,而不是由第二时钟信号ck2的边沿触发。这有利地使得当与外部装置相互作用时能够精确控制响应时间。单独的相应TIME寄存器55与每个端口22相关联,用于存储触发时间值。每个端口22从计数器57接收当前系统时间值,并且每个端口22包含比较逻辑电路,比较逻辑电路被构造成使得,当端口处于定时模式而非计时模式时,仅在当前时间值tm与存储在相应TIME寄存器55中的触发时间值匹配时才在端口与外部环境之间传送数据。也就是说,当检测到匹配时,来自外部环境的输入数据被取样到端口中,或者从端口输出的数据呈现至外部环境。当检测到匹配时,也仅发信号告知端口与外部环境之间的此传送。这代替了由第二时钟信号ck2的边沿触发而传送和发信号。
此外,与时间计数器57的连接允许每个端口用输入时间对输入数据加时间戳,并使得该时间戳可用于线程。
有利地,为了有助于快速反应时间,在线程调度器18与执行单元16之间提供直接的硬线连接28,以允许线程调度器18控制执行单元16应取出并运行哪个线程或哪些线程。在线程调度器18与每个端口22之间还设置有直接的硬线路径30a、30b、30c;并且在线程调度器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之间是通过总线13连接的,则“直接”连接或路径表示与总线分开的一种连接或路径。因此,端口22、寄存器20、线程调度器18和执行单元16之间的各种通信都不需要总线仲裁便可发生,改进了反应时间。端口22也可设置有与总线13的额外连接(未示出)。
本申请中使用的术语“端口”可指“引脚端口(pin port)”或“数据端口”。引脚端口是针对单个引脚的直接接口。引脚端口是负责检测在处理器芯片的物理边界的引脚处发生的信号的单独的逻辑转换(即,上升边沿和下降边沿)的逻辑电路。数据端口是“高水平”,因为它们可处理典型地累积在I/O缓冲器中且典型地组成数据(例如,字)一部分的一位或多位。取代检测上升边沿和下降边沿,数据端口在特定时刻处理一位或多位的状态或逻辑电平。数据端口可以是开/关芯片(on/off chip),或者可以是针对嵌在同一芯片上的另一处理器的端口。
图4示意性地示出了根据本发明的优选实施方式的端口22。端口22包括I/O缓冲器32,用于将输入数据传送至处理器14并从处理器14传送输出数据。另外,每个端口22包括活动处理逻辑电路36,用于监测发生在端口处的活动并通过至少一个就绪位或就绪标记37用信号告知特定活动的发生。优选地通过直接路径30将就绪标记37发信号告知线程调度器,也可通过直接连接31由执行单元来控制就绪标记37。注意,直接连接31优选地包括多个连接,如图4所示。端口可能检测到的潜在活动包括:
-已将数据输入至端口,
-已将某些特定数据输入至端口,
-端口已经可用于输出,和/或
-已达到特定时间。
为了有助于检测这种活动,端口22设置有一组寄存器38。这些寄存器包括用于存储相关线程的标识的线程标识符(TID)寄存器、用于存储一个或多个条件的控制(CTRL)寄存器、用于存储程序中暂停执行处的位置的连续点矢量(VECTOR)寄存器,以及用于存储与条件相关联的任何数据的数据(DATA)寄存器。由线程调度器18通过直接路径30(在图3中直接路径是30a、30b、30c)将值TID写入寄存器38,并且由执行单元16通过直接路径31将值VECTOR、CTRL和DATA写入。一旦检测到所需活动,TID就返回至线程调度器18,以便识别相关联的线程。寄存器38还包括识别用于端口的时钟发生器172的时钟发生器标识符寄存器CKID 54、存储特定时间值的触发时间寄存器TIME 55、以及时间戳寄存器TSTAMP。活动逻辑电路还包括启用标记(enable flag)39,在下面对其进行进一步详细讨论。
注意,虽然在图4中示出了寄存器38包含在端口22内,但是事实上,其可位于处理器14内的其他位置并简单地与端口22相关联。
对于外部环境来说I/O缓冲器的内容物是可见的。也就是说,如果端口是芯片外端口,那么I/O缓冲器32中的数据将出现在引脚上,并且如果端口是另一处理器的芯片上端口,那么I/O缓冲器中的数据将出现在处理器之间的互连204上。I/O缓冲器中的数据也将出现在总线13的总线驱动器的输入处,并且也可由执行单元16通过直接连接(例如31)访问。
执行单元16、线程调度器18和总线13由第一时钟信号ck1计时。如果端口22处于计时模式中,那么如下所述,I/O缓冲器32和活动逻辑电路36由选择的第二时钟信号ck2计时。
当执行输入时,在第二时钟信号ck2的边沿上将数据从外部环境(例如,从引脚)捕获至I/O缓冲器。活动逻辑电路36还判断就绪位37在第二时钟信号的边沿上有效。由线程调度器通过直接连接30检测到就绪位37位于第一时钟信号ck1的边沿上。通过检测到判断有效的就绪位,线程调度器确保相关线程处于运行组中。然后,通过完成该线程的输入指令的执行(通过将数据放入执行单元的寄存器(可能包括线程寄存器20)的一个或多个中、或放置在总线13上),由执行单元以与第一时钟信号ck1合拍的方式对输入数据起作用。一旦完成输入,执行单元16就通过直接路径31判断就绪位37在第一时钟信号ck1的边沿上无效。
还注意,如果在CTRL和DATA寄存器38中设置条件,那么在第一时钟ck1的边沿上捕获的数据与该条件相比较,并且仅当由活动逻辑电路36发现满足该条件时设置就绪位37。
为了执行输出,必须无效就绪位37,以指示出I/O缓冲器32当前不涉及输入并且也不涉及此前的输出。假设就绪位37被无效,这由第一时钟信号ck1边沿上的线程调度器通过直接路径30检测到。通过检测无效的就绪位,线程调度器确保相关线程位于运行组中。然后,以与第一时钟信号ck1合拍的方式,通过完成该线程的输出指令的运行(或通过从一个或多个执行单元的寄存器(可能包括线程寄存器20)呈现数据、或使得可从总线13得到数据),执行单元16使得输出数据可用于I/O缓冲器32。一旦运行输出指令,执行单元16也通过直接路径31判断就绪位37有效,其指示出I/O缓冲器32正被输出占用并且还不可用于其他后续输出。然后,将输出数据计时在第二时钟信号ck2的边沿上的I/O缓冲器32中,使得对于外部环境可见。活动逻辑电路36再次使得就绪位37在第二时钟信号ck2的边沿上无效,以指示出该输出已被呈现至外部环境。
另一方面,如果端口22处于定时模式中,那么如下所述,I/O缓冲器32和活动逻辑电路36由特定时间触发。
当运行输入时,当活动逻辑电路36检测到从系统时间计数器57接收的当前系统时间值tm与存储在TIME寄存器55中的触发时间值匹配时,将数据从外部环境(例如,从引脚)捕获到I/O缓冲器中。一旦检测此匹配,则活动逻辑电路36还判断就绪位37有效。由线程调度器通过直接连接30检测到就绪位37位于第一时钟信号ck1的边沿上。通过检测到有效的就绪位,线程调度器确保相关线程在运行组中。然后,通过完成该线程的输入指令的运行(通过将数据放入一个或多个执行单元的寄存器(可能包括线程寄存器20)中、或放置在总线13上),由执行单元以与第一时钟信号ck1合拍的方式对输入数据起作用。一旦完成输入,执行单元16就通过直接路径31判断就绪位37在第一时钟信号ck1的边沿上无效。
为了执行输出,如上所述,必须无效就绪位37,以指示出I/O缓冲器32当前不涉及输入并且也不涉及此前的输出。假设就绪位37被无效,这由第一时钟信号ck1边沿上的线程调度器通过直接路径30来检测。通过检测无效的就绪位,线程调度器确保相关线程位于运行组中。
然后,通过以与第一时钟信号ck1合拍的方式完成该线程的输出指令的运行(通过从一个或多个执行单元的寄存器(可能包括线程寄存器20)呈现数据、或使得可从总线13得到数据),执行单元16再一次使得输出数据可用于I/O缓冲器32。一旦运行输出指令,执行单元16也通过直接路径31判断就绪位37有效,其指示出I/O缓冲器32正被输出占用并且还不可用于其他后续输出。当活动逻辑电路36检测到从系统时间计数器57接收的当前系统时间值tm与存储在TIME寄存器55中的触发时间值匹配时,其触发I/O缓冲器32以从内部环境取出输出数据,从而使得数据从外部环境可见。一旦检测此匹配,活动逻辑电路36还会无效就绪位37,以指示出该输出已被呈现至外部环境。
当端口处于定时模式中时,忽略CTRL和DATA寄存器中的任何条件。
端口22还具有时间戳模式,由此活动逻辑电路36在将数据从外部环境捕获至I/O缓冲器32的时刻记录系统时间值tm。此时间戳被存储在与端口相关联的时间戳寄存器TSTAMP中。执行单元16可用来从TSTAMP寄存器中读取时间戳,并将其存储在正处理输入的线程的操作数寄存器OP(见下文)之一中。如果端口处于时间戳模式中,那么,不清除就绪位37,直到已读取TSTAMP寄存器为止。
因此,此时间戳特征和用于每个相应线程的一组寄存器一起有利地允许在端口处对输入加时间戳,然后将该时间戳传送至负责该输入的线程的寄存器。
在本发明的尤其有利的实施方式中,加有时间戳的输入可与定时输出一起使用,以便精确地控制由特定线程处理的输出与输入之间的相对定时。也就是说,本发明可使线程在输入之后执行一定数量循环的输出。在此情况下,线程从端口22的TSTAMP寄存器中读取时间戳,然后将(相同端口的或另一端口的)TIME寄存器55中的触发时间值设置为时间戳加上所述数量的循环。
图5示出了用来代表线程的示例性线程寄存器库20。库20包括对应于当前由线程调度器16所考虑的各线程T1至Tm的多组寄存器。在此优选实例中,每个线程的状态由18个寄存器代表:2个控制寄存器、4个存取寄存器和12个操作数寄存器。这些寄存器如下所述。
控制寄存器:
-PC是程序计数器
-SR是状态寄存器
存取寄存器:
-GP是全局公用指针(global pool pointer)
-DP是数据指针
-SP是栈指针
-LR是链接寄存器
操作数寄存器:OP1...OP12
控制寄存器存储关于线程状态的信息并用于控制线程的运行。特别地,线程接受事件或中断的能力由保存在线程状态寄存器SR中的信息控制。存取寄存器包括:用于程序的局部变量的栈指针、通常用于程序之间共享数据的数据指针、以及用于存取大常数和程序入口点的常数公用指针。操作数寄存器OP1...OP12由执行算术运算和逻辑运算、存取数据结构和调用子程序的指令使用。另外,当使用加有时间戳的输入时,线程将时间戳读入到线程操作数寄存器OP的一个中。
还提供了多个指令缓冲器(INSTR)19,以用于暂时存储线程的实际指令。每个指令缓冲器优选地是64位长,每个指令优选地是16位长,每个缓冲器允许存储4个指令。在线程调度器18的控制下从程序存储器24取出指令,并将其暂时存放在指令缓冲器19中。
执行单元可使用寄存器20和缓冲器19中的每个。此外,线程调度器18可至少使用每个线程的状态寄存器SR。
如上所述,这里所用的术语“事件”表示特定类型的操作,或表示与该特定类型的操作相对应的活动。基于操作的事件与基本输入-输出操作稍微不同,并以如下方式工作。通过将来自执行单元16的连续点矢量以及将来自线程调度器18的线程标识符传送至与端口22相关联的VECTOR和TID寄存器38(优选地经由直接路径31和30),来首先为线程设置事件。关联的条件和条件数据也可写入端口22的CTRL和DATA寄存器38。因此在端口处设置事件,但是不必启用。为了使端口能够产生事件的指示,还必须判断端口的启用标记39有效,优选地由线程调度器18通过直接路径30判断。此外,为了使线程本身能够接受事件,必须将线程的相应状态寄存器SR中的线程事件启用(EE)标记设置为事件启用的。一旦由此设置并启用事件,线程就可以使用基于事件的等待指令暂停等待事件,该基于事件的等待指令作用于线程调度器18。此时,可从相关的指令缓冲器19中删除当前等待指令。当事件发生时,例如一些数据被输入至端口,通过使线程标识符和连续点矢量从端口22返回到线程调度器18和执行单元16,发出信号告知该发生,允许从程序存储器24中取出连续点矢量处的指令并使其进入指令缓冲器19,并且在代码中的适当点处恢复运行。当事件发生时,相应状态寄存器SR中的线程的EE标记可设置为事件禁止,以防止线程在事件发生后立即对事件做出反应。作为事件发生时线程执行指令的结果,启用标记39可被无效。
在设置多个端口以便为等待来自一个或多个端口的事件作准备时,可以判断启用标记39有效。在启用一组端口启用标记之前线程的EE标记也可被设置为事件启用的,并且在此情况下,就绪的即将启用的第一端口将生成事件,该事件使当前指令被废除并通过在连续点矢量处立即取出和运行指令而继续运行。
端口的启用标记39和状态寄存器EE标记的优点在于,事件的启用和禁止是与事件设立和通过等待指令暂停线程分离的,对于特定线程和/或对于各种不同线程,允许容易地转换开启和关闭不同的输入和输出条件。例如,即使事件被禁止,该事件也可在端口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的链可包括在线程中。例如,在事件被禁止的同时(即,在端口的启用标记39和/或状态寄存器的EE标记被无效的同时),但是在事件矢量和条件仍保留设置在寄存器38内的同时,基本I/O操作可在两个基于事件的等待操作之间交叉进行。也就是说,事件可在完成第一个基于事件的等待操作之后被禁止,随后运行的基本I/O使用相同端口,然后同一事件被重新启用,用于在第二基于事件的等待操作。如上所述,基本I/O操作中止和解除中止该线程,但是不影响端口的启用标记39或状态寄存器中的EE标记,也不将控制传送至事件矢量。
定时器58也可用来产生事件。图6中示出了一个示例性定时器58。如上所述,定时器58本身不产生定时器值tm,而是从系统时间计数器57接收该值。定时器58可被认为与这样的闹钟类似:只要当前系统时间值tm与存储在TIME寄存器59中的触发时间值匹配,就产生指示。
与端口22类似,每个定时器58包括具有就绪标记37’和定时器事件启用标记39’的活动逻辑电路36’。每个定时器58还包括寄存器38,其包括与端口22中一样的CTRL、TID和VECTOR寄存器。寄存器38还包括TIME寄存器59,在条件数据即为触发时间的意义上,其对应于端口22的DATA寄存器。
为了对线程设立定时器事件,并且对定时器设置定时器事件启用标记39’。执行单元还将控制寄存器CTRL构造为指示出定时器输出在触发时间上是有条件的,将触发时间存储在TIME寄存器59中,并将线程的连续点矢量存储在VECTOR寄存器中。线程调度器18将线程标识符存储在TID寄存器中。最后,由于执行等待指令,执行单元16在线程的状态寄存器SR中设置线程事件启用标记EE。当活动逻辑电路36’检测到从时间计数器57接收的当前系统时间tm与存储在TIME寄存器59中的触发时间匹配时,其判断就绪标记37’有效,将线程标识符从TID寄存器返回至线程调度器18,并将连续点矢量从VECTOR寄存器返回至执行单元16。然后,在线程调度器18的指导下,执行单元在由连续点矢量为该线程指定的代码中的点处继续执行线程。
因此,可以看到定时器58如何用来以与端口22类似的方式产生事件。这种定时器事件可用来,例如,在每个指定时间周期(例如,每毫秒)唤醒线程一次。
如果不对定时器59设置定时器事件启用标记39’,那么TIME寄存器59仅用来确定这样的时间,在所述时间之后执行单元能够从定时器58读取系统时间tm,如结合图3所讨论的。这将导致:如果当前时间在该时间之前,那么线程尝试读取定时器以中止。
现在,参照图7的流程图描述使用定时端口22的数据的示例性传送。在步骤100,执行单元16开始在线程调度器18的指导下执行线程。在步骤102,执行单元16将触发时间值传送至端口22的TIME寄存器55。在步骤104,执行单元将端口22设置成定时模式。在步骤106,执行单元遇到线程内的输入或输出指令。在输出指令的情况下,执行单元将通过使I/O缓冲器32可用到输出数据而部分地完成输出指令。假设还未达到触发时间,也将不设置端口22的就绪位37。线程调度器18检测到此情况并通过将该线程从运行组中去除而中止线程。现在,端口22对线程负责,而不是线程调度器18对线程负责。在步骤108,端口22的活动逻辑电路36从系统时间计数器57接收当前系统时间值tm。在步骤110,活动逻辑电路36判断当前系统时间值tm是否与存储在TIME寄存器55中的触发时间值匹配。如果不匹配,那么该方法返回至步骤108,在该步骤中,端口继续读取计数器57,同时当前时间值tm增加。
然而,如果当前时间与触发时间匹配,那么该方法分支到步骤114,其中,在将输入数据从外部环境捕获至I/O缓冲器32的情况下使得输入数据可用于内部环境,并且,在将输出数据从内部环境捕获至I/O缓冲器32的情况下使得输出数据对于外部环境可见。在步骤116,活动逻辑电路36判断就绪位37有效以指示该传送。在步骤118,线程调度器检测就绪位37并将线程返回至运行组,导致执行单元16恢复线程的执行。在输入情况下,恢复的执行将包括完成输入指令,该指令将数据从I/O缓冲器32输入至内部环境中,例如,输入至线程的操作数寄存器OP的一个中。
现在,参照图8描述定时器58产生事件的示例性使用。在步骤120,执行单元16开始在线程调度器18的指导下运行线程。在步骤122,执行单元16和线程调度器18通过如下方式为定时器58设立事件:将连续点矢量、条件和触发时间从执行单元16传送至VECTOR、CTRL和TIME寄存器38’;以及将相关线程对输入的线程标识符从线程调度器18传送至TID寄存器38’。步骤122还包括在线程的状态寄存器SR中设置线程事件启用标记,并设置定时器事件启用标记39’(如果还未设置的话)。在步骤124,执行单元16执行等待指令,该指令导致线程调度器通过将线程从运行组中去除而暂停该线程的执行。现在,定时器58对线程负责,而不是线程调度器18对线程负责。在步骤126,定时器58的活动逻辑电路36’从系统时间计数器57接收当前系统时间值tm。在步骤128,活动逻辑电路36判断当前系统时间值tm是否与存储在TIME寄存器59中的触发时间值匹配。如果不匹配,那么该方法返回至步骤126,在该步骤中,定时器58继续读取计数器57,同时当前时间值tm增加。
然而,如果当前时间与触发时间匹配,那么该方法分支到步骤132,其中,活动逻辑电路36’判断就绪位37’有效以指示该传送。在步骤134,活动逻辑电路36’将连续矢量从VECTOR寄存器返回至执行单元16,并将线程标识符从TID寄存器返回至线程调度器。注意,步骤136和134可基本上同时执行。在步骤136,线程调度器18将线程返回至运行组,导致执行单元继续线程的执行。
接口处理器由于其基于线程的结构而可支持若干种编程方法。接口处理器可以作为执行标准输入和输出的单个常规处理器,或者其可被编程为数百个通信部件的并行阵列的一部分。提供了支持这些选择的指令集。指令集包括支持初始化、终止、开始和停止线程以及提供输入/输出通信的特殊指令。输入和输出指令允许与外部装置非常快地通信。它们支持高速、低时延输入和输出以及高级协同编程技术。以下将更全面地讨论它们在处理端口活动中的应用,其中描述了可用来实现本发明的实例指令。
端口可在输入或输出模式下使用。在输入模式中,条件可用来过滤传送给线程的数据。如下面所述,当数据可用时,端口可用来产生事件或中断。这允许线程监测若干端口,仅为那些就绪的端口服务。然后一旦就绪,输入和输出指令IN和OUT可用来将数据传送至端口或从端口传送数据。在此情况下,IN指令从n位端口输入并零扩展n个最不重要的位,OUT指令输出该n个最不重要的位。
两个另外的指令INSHR和OUTSHR最优化数据传送。INSHR指令将寄存器(例如,操作数寄存器)的内容向右移n位,用从n位端口输入的数据填补最左侧的n位。OUTSHR指令将数据的n个最不重要的位输出至n位端口,并将寄存器的内容向右移n位。
OUTSHR端口  端口
Figure G2008800206793D00271
s[位0宽度(端口)];从其输出
               s←s>>宽度(端口)端口和移位
INSHR端口      s←s>>宽度(d);移位和输入
端口
Figure G2008800206793D00281
s[位(每字位-宽度(d))宽度(d)]来自端口
其中,
Figure G2008800206793D00282
代表条件输入,
Figure G2008800206793D00283
代表条件输出。
INSHR指令可用来通过端口的宽度移位数据。这允许从一个端口输入的数据被移位,然后,与从另一端口输入至相同寄存器的数据连接。
在使用端口前必须对其进行构造。用SETC指令对其进行构造,该指令用来定义端口的若干独立设置。每种设置都具有缺省模式,并且,仅在需要不同的模式时才需要构造。
SETC  端口,模式  端口[ctrl]←模式    设置端口控制
SETC模式设置的作用如下所述。每种设置的首项是缺省模式。
模式     作用
OFF      端口无效;引脚高阻抗
ON       有效
IN       端口是输入
OUT      端口是输出(但是输入返回当前引脚值)
RAW      数据直接传送至引脚或从引脚直接传送数据
CLOCKED  数据传送与时钟同步
TIMED    对数据传送定时
EVENT    端口将引起事件
INTERRUPT端口将引起中断
DRIVE       引脚被高驱动和低驱动
PULLDOWN    引脚下拉0位,否则为高阻抗
PULLUP      引脚上拉1位,否则为高阻抗
RISING      端口时钟的上升边沿是第一(捕获)边沿
FALLING     端口时钟的下降边沿是第一(捕获)边沿
DATAPORT    端口用作标准端口
CLOCKPORT   端口时钟被其输出直接牵制
NOSTAMP     未执行时间戳
STAMPED     启用时间戳
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指令时,如果清除就绪位,那么端口提取数据并设置就绪位。如果设置就绪位,那么线程中止,直到就绪位被端口清除为止。
事件和中断允许端口自动地将控制传送至预定的事件控制器(handler)。线程接受事件或中断的能力由保持在线程状态寄存器SR中的信息控制(见图4),并可用TSE和TSD指令明确地控制。此信息包括事件启用标记(EE)和中断启用标记(IE)。
TSE  s    SR←SR∨s    线程状态启用
TSD  s    SR←SR∧
Figure G2008800206793D00301
s  线程状态禁止
这些指令的操作数应是以下中的一个:
EE    启用或禁止事件
IE    启用或禁止中断
事件是在其被设立的同一范围内被处理。因此,对于所有线程的状态都有效的事件,允许线程对事件快速反应。线程可用端口执行输入和输出操作,端口产生事件,同时不改变部分或所有事件信息。这允许线程完成处理事件,并立即等待另一类似事件。
必须在使用SETV指令启用事件之前设置事件控制器的程序位置。端口具有确定何时将产生事件的条件;用SETC和SETD指令设置这些条件。
可用无条件事件启用(EEU)指令来启用通过特定端口的事件产生,并可用无条件事件禁止(EDU)指令将其禁止。如果事件条件操作数为真,那么真事件启用(EET)指令启用事件,否则禁止该事件;相反地,如果事件条件操作数为假,那么假事件启用(EEF)指令启用事件,否则禁止该事件。这些指令被用来使安全输入的执行最优化。以下是一些用于在端口上构造事件的指令格式实例。
SETV端口,v  端口[矢量]←v    设置事件矢量
SETD端口,d    端口[数据]←d    设置事件数据
SETC端口,c    端口[ctrl]←c    设置事件控制
EET端口,b  端口[启用]←b;端口[tid]←线程  真事件启用
EEF端口,b  端口[启用]←b;端口[tid]←线程  假事件启用
EDU端口  端口[启用]←假;端口[tid]←线程  事件禁止
EEU端口  端口[启用]←真;端口[tid]←线程  事件启用
已经在一个或多个端口上启用事件,线程可使用WAITEU指令来等待至少一个事件。随着控制被传送至由相应事件矢量指定的事件控制器,这可能导致事件立即发生,且事件是通过清除EE(事件启用)标记而禁止。替代地,可暂停线程,直到事件发生为止——在此情况下,当事件发生时将清除EE标记,并且线程恢复执行。
WAITET b如果b则SR[EE]←真    如果真则事件等待
WAITEF b如果
Figure G2008800206793D00321
b则SR[EE]←真    如果假则事件等待
WAITEU SR[EE]←真           事件等待
CLRE   SR[EE]←假;         禁止所有事件
       对所有端口           对线程
       如果端口[tid]=线程则端口[启用]←假
为了最优化重复等待一个或多个事件直到条件发生的常见情形,提供了事件等待指令的条件形式。仅当其条件操作数为真时WAITET指令等待,且仅当其条件操作数为假时WAITEF等待。
可用单个CLRE指令禁止由线程启用的所有事件。这会在所有端口中禁止事件产生,所述端口具有由线程启用的事件。CLRE指令还清除线程的状态寄存器中的事件启用状态。
为了最优化线程对高优先级端口的响应度,在随后开始启用端口并使用一个事件等待指令之前,TSE EE指令可用来首先启用线程上的事件。这样,处理器可按优先级顺序扫描端口。这可能导致事件一被启用就立即被处理。
与事件相比,中断不在当前范围内被处理,因此必须在中断处理器的执行之前保存当前的PC和SR(以及潜在的一些或所有其他寄存器)。在由端口r产生中断时,自动出现以下代码:
SAVEPC←PC;
SAVESR←SR;
SR[EE]←假;
SR[IE]←假;
PC←r[矢量]
当处理器完成时,中断线程的执行可由RFINT指令实现。
RFINT PC←SAVEPC;从中断返回
      SR←SAVESR
每个处理器优选地具有以100MHz记录的时钟(第三时钟173)。通过内部产生的时钟或者通过外部提供的时钟,这可同步进行输入和输出操作。提供一组时钟发生器172来进行此操作,每个时钟发生器可用时钟173、时钟171或外部一位时钟作为其时钟源。
每个时钟发生器还具有八位除法器。当其设置为零时,源信号直接通向其输出。源时钟的上升边沿用来执行除法。因此,设置值1将导致来自改变输入的每个上升边沿的时钟发生器的输出,减半输入频率f;并且,设置值i将产生输出频率f/2i。
处理器保持用于线程的一组可用源,例如,时钟发生器、定时器和端口。资源被分配以由带有GETR指令的线程使用。提供一组时钟发生器172来进行此操作,每个时钟发生器可使用处理器时钟171、另一内部时钟173或外部一位时钟作为其时钟源。
用SETCLK指令设置时钟发生器172的源。如果操作数指定一位端口,那么该端口用作时钟输入。如果操作数指定定时器ID,那么时钟输入被设置为从定时器接收输入。用SETD指令设置除法因数。使用操作数的最低八位,忽略剩下的。
SETCLK发生器发生器[sid]←s设置时钟发生器的源
一旦时钟发生器已被构造,那么从时钟发生器计时的输入端口需要被连接至其上。这也可用端口上的SETCLK指令来连接,将时钟发生器ID指定为另一操作数。
SETCLK端口    端口[ckid]←s  设置端口的时钟发生器
当从时钟发生器172驱动输出端口22时,引脚上的数据与相应的时钟信号(例如,ck2)的边沿同时改变状态。如果若干输出端口由相同的时钟信号计时,那么它们将表现为用作单个输出端口,虽然处理器可在不同时间对它们提供数据。类似地,如果从时钟发生器172驱动输入端口22,那么将与相应的时钟信号的边沿同步地对数据采样,并且如果若干输入端口由相同的时钟信号计时,那么它们将表现为用作单个输入端口,虽然处理器可在不同时间从那些端口获得数据。替代地,每个端口可由不同的第二时钟信号ck2、ck2’、ck2”等计时。例如,每个端口可由从不同的外部时钟源产生的时钟信号计时。
因此,计时端口的使用从输入和输出接口的同步操作去耦输入和输出程序执行的内部定时。
当端口设置为CLOCKED模式时对端口计时。时钟输入来自时钟发生器,并用SETCLK指令设置,将时钟发生器ID作为操作数。
通过设置由EDGE设置值决定的RISING和FALLING模式而设置时钟脉冲边沿,数据捕获于所述时钟脉冲边沿上并呈现在输出处。当模式被构造为RISING时,上升边沿是第一边沿,而下降边沿是第二边沿。当模式被构造为FALLING时,下降边沿是第一边沿,而上升边沿是第二边沿。
从第一边沿上的引脚捕获输入数据。在此边沿上,也设置就绪位。当执行IN或INSHR指令并且设置就绪位时,返回数据并清除就绪位。如果不设置就绪位,那么中止线程,直到设置就绪位为止。
如果设置条件,那么将时钟脉冲边沿上所捕获的数据与该条件进行比较,并且仅当符合条件时设置就绪位。
在第二边沿上发送输出数据。此边沿还清除就绪位。当运行OUT或OUTSHR指令时,如果清除就绪位,那么记录数据并设置就绪位,并且如果设置就绪位,那么中止线程,直到清除其为止。
如果设置时钟发生器以从外部时钟源产生第二时钟信号,那么根据外部时钟参考,可解除中止的输入和输出。这便于对外部刺激快速反应。
端口的CLOCKPORT模式导致所选择的第二时钟信号ck2(而不是数据)从相应端口被输出。此模式可用来使处理器和其所连接的外部装置之间的接口同步。例如,此特征可用来使图2A所示的阵列中的两个接口处理器14的第二时钟信号同步,以使它们之间的接口由共同的第二时钟信号计时,但是每个处理器14根据其本身相应的第一时钟在内部运行。在DATAPORT模式中,端口简单地输入或输出数据。
处理器还具有一组定时器58,这些定时器可由线程用来读取当前时间或等待直到规定时间为止。
用GETR TIMER指令分配定时器。可用SETC指令对其进行构造,并且其可构造成的两种模式是:
UNCOND  定时器始终就绪——立即从定时器读取时间,以及
AFTER    当时间在其TIME值之后时,定时器就绪。
在UNCOND(无条件)模式中,IN指令读取定时器的当前值。在AFTER模式中,IN指令等待,直到系统时间计数器57的值在定时器的TIME寄存器中的值之后(晚于定时器的TIME寄存器中的值)为止。可用SETD指令设置定时器的TIME寄存器中的值。
定时端口与计时端口类似,不同之处在于,不使用时钟输入,而使用来自系统时间计数器57的输入。用SETPTIME(设置端口时间)指令设置时间值。定时端口通常与加有时间戳的端口共同使用,因为这允许对响应时间的精确控制。用GETTSTMP指令读取时间戳。
SETPTIME端口    端口[时间]←s    设置端口时间
GETTSTMP端口,d    d←端口[tstamp]    获得时间戳
在输入模式中,从外部环境(例如,引脚)捕获数据,并且当存储的数据值与当前时间匹配时,设置就绪位;忽略条件。当执行IN或INSHR指令并设置就绪位时,返回捕获的数据并清除就绪位。如果不设置就绪位,那么线程中止,直到设置就绪位为止。在输入模式中,SETPTIME指令从不中止。
在输出模式中,记录的数据对于外部环境可见(例如,放置于引脚)并当存储的数据值与当前时间匹配时,设置就绪位。当执行OUT或OUTSHR指令时,如果清除就绪位,那么记录数据并设置就绪位。如果设置就绪位,那么线程中止,直到清除其为止。
在输出模式中,如果设置就绪位,那么SETTSTMP指令将中止,直到清除其为止。这确保了端口的存储时间在完成等待输出之前不会改变。
当端口处于时间戳模式中时,那么从外部环境捕获数据的时间被记录在时间戳寄存器中。用GETTSTMP指令读取时间戳寄存器。当处于时间戳模式中时,IN和INSHR指令不清除就绪位——仅有GETTSTMP指令清除就绪位。
在定时端口和时间戳的以下实例中,输出端口(outport)在输入端口(inport)改变状态之后的定时器循环的某一间隔时改变状态。
IN        inport,v
SETC      inport,STAMPED
SETC      inport,NE
SETD      inport,v
SETC      outport,TIMED环:
IN        inport,v
GETTSTMP  inport,t
ADD       t,t,间隔
SETTIME   outport,t
OUT       outport,v
BBU       环//分支
以下是示出了定时端口和时间戳的使用的另一实例。从inport获得数据,用来访问查找表中的相应输出值,然后通过outport输出该值。当外部端口ckport变高时,取得数据。从ckport端口对inport端口计时,并且ckport的状态改变被加有时间戳,因此从inport取得的数据将与此时间戳相对应。最后,通过定时端口outport在规定数量的定时器循环之后输出数据。
GETR        ck,CLOCK
SETC        ckport,STAMPED
SETC        ckport,TRANSITION
SETD        ckport,1
SETCLK      ck,ckport
SETC        inport,CLOCKED
SETCLK      inport,ck
SETC        outport,TIMED环:
IN          ckport,d
GETTSTMP    ckport,t
IN          inport,d
LDW         q,查找表,d//从查找表载入寄存器中
ADD         t,t,间隔
SETTIME     outport,t
OUT         outport,d
BBU         环
从以上描述和实例中,可看到本发明如何允许在线程的执行、管理和调度中精确定时,并因此提供对由那些线程处理的输入和输出操作的响应时间的精确控制。
可以理解,以上实施方式仅通过实例进行描述。作为时钟信号的替代,ck1、ck2、ck2’、ck2”等中的一个或多个可由不规则定时信号或选通信号替代。当前时间的不同源(位于处理器的内部或外部),也可用来对端口和/或定时器计时。虽然仅相对于输入描述过时间戳,但是其原理也可延伸至时间戳输出操作。在其他实施方式中,可根据芯片的期望规格提供不同的寄存器组和指令集。在一些实施方式中,线程标识符不需要传送至端口,但是可保持线程调度器的响应度,或存储在别的地方。替代地,可以在端口为每个线程提供单独的就绪标记,以使线程标识符被传送至端口从而选择正确的就绪信号,但是线程标识符不需要在活动检测后返回至线程调度器。此外,条件和/或条件数据不需要传送至端口。相反地,可在端口处预先构造条件和/或可在线程调度器处或其他地方评价条件。可在来自端口和定时器以外的其他源的活动的基础上调度线程。可在处理器的各种部件之间提供不同的互连。同样,本发明并非专用于带有移动应用处理器的移动终端中。对于本领域的技术人员来说,其他应用和构造将是显而易见的。本发明的范围不限于所述实施方式,而是由所附权利要求限制。

Claims (62)

1.一种具有接口部分和内部环境的处理器,其中,所述接口部分包括:
至少一个端口,被布置为接收当前时间值;
第一寄存器,与所述端口相关联,被布置为存储触发时间值;以及
比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示所述传送;并且
其中,内部环境包括:
执行单元,用于在至少一个端口与内部环境之间传送数据;以及
线程调度器,用于调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
2.根据权利要求1所述的处理器,包括被布置为输出当前时间值的计数器,所述至少一个端口被布置为接收来自所述计数器的当前时间值。
3.根据权利要求2所述的处理器,包括多个端口和多个第一寄存器,每个第一寄存器与相应的端口相关联并被布置为存储相应的触发时间值,其中,由所述线程调度器实现的所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
4.根据权利要求1所述的处理器,其中,所述传送包括输入操作,由此将数据从外部环境捕获至所述至少一个端口,并且所述改变包括将所述就绪信号或信号设置成第一状态,所述第一状态指示输入至内部环境的所述数据的有效性。
5.根据权利要求1所述的处理器,其中,所述传送包括输出操作,由此将数据从所述至少一个端口中的每个呈现至外部环境,并且所述改变包括将所述就绪信号或信号设置成第二状态,所述第二状态指示与内部环境进一步传送数据的至少一个端口的有效性。
6.根据权利要求4所述的处理器,其中,所述执行单元适于执行将数据从端口输入至内部环境的输入指令,只要所述就绪信号或信号中相应的一个处于所述第一状态,所述输入指令是所述一个或多个线程的顺序的组成指令。
7.根据权利要求5所述的处理器,其中,所述执行单元适于执行将数据从内部环境输出至端口的输出指令,只要所述就绪信号或信号中相应的一个处于所述第二状态,所述输出指令是所述一个或多个线程的顺序的组成指令。
8.根据权利要求6所述的处理器,其中,所述执行单元适于在完成输入指令时将所述相应的就绪信号设置成所述第二状态。
9.根据权利要求7所述的处理器,其中,所述执行单元适于在完成输出指令时将所述相应的就绪信号设置成所述第一状态。
10.根据权利要求6所述的处理器,其中,由所述线程调度器实现的所述调度包括暂停输入指令线程的执行,直到相应的就绪信号被设置为所述第一状态。
11.根据权利要求7所述的处理器,其中,由所述线程调度器实现的所述调度包括暂停输出指令线程的执行,直到相应的就绪信号被设置为所述第二状态。
12.根据权利要求8和9所述的处理器,其中,所述传送包括输入操作和输出操作,并且所述执行单元被布置为执行输入指令和输出指令。
13.根据权利要求1所述的处理器,其中,所述执行单元被构造为执行设置触发时间指令,所述设置触发时间指令将触发时间值存储在所述第一寄存器的一个中。
14.根据权利要求1所述的处理器,其中,所述外部环境包括容纳有所述处理器的集成电路的至少一个引脚。
15.根据权利要求1所述的处理器,其中,所述外部环境包括位于容纳有所述处理器的集成电路上的另一处理器。
16.根据权利要求1所述的处理器,其中,端口与内部环境之间的数据传送包括端口与所述执行单元之间的传送。
17.根据权利要求1所述的处理器,其中,所述内部环境包括总线,并且端口与内部之间的数据传送包括端口与总线之间的传送。
18.根据权利要求1所述的处理器,其中,内部包括多组第二寄存器,每组存储与所述多个线程中的相应一个线程相关的信息,并且端口与内部环境之间的传送包括端口与所述第二寄存器中之一之间的传送。
19.根据权利要求1所述的处理器,其中,所述线程调度器被构造为保持一组可运行线程,并且由所述线程调度器实现的所述调度包括通过将一线程从所述组中去除而暂停该线程。
20.根据权利要求1所述的处理器,其中,所述至少一个端口能够在时间戳模式下操作,因而端口使得时间戳与端口和外部环境之间的数据传送相关联。
21.根据权利要求20所述的处理器,其中,所述接口部分包括与所述至少一个端口相关联的第三寄存器,时间戳的所述关联包括在执行加有时间戳的传送时将当前时间值存储在所述第三寄存器中。
22.根据权利要求18、20和21所述的处理器,其中,所述执行单元被构造为将时间戳从所述第三寄存器传送至与加有时间戳的传送相关联的线程的所述第二寄存器的一个中。
23.根据权利要求20所述的处理器,其中,所述执行单元被布置为读取与来自端口的数据输入相关联的时间戳,并且将触发时间值设置为时间戳加上特定时间间隔,以便在所述间隔过去之后触发从端口至外部环境的数据输出。
24.根据权利要求1所述的处理器,包括至少一个定时器,所述定时器被布置为将当前时间传送至所述执行单元。
25.根据权利要求24所述的处理器,其中,所述定时器包括:第四寄存器,被布置为存储唤醒时间值;以及比较逻辑电路,被构造为只要当前时间值与唤醒时间值匹配,则产生指示;其中,由所述线程调度器实现的所述调度包括调度定时线程的暂停执行,直到收到所述指示。
26.根据权利要求25所述的处理器,其中,所述执行单元被构造为响应于所述指示从所述定时器读取当前时间。
27.根据权利要求25所述的处理器,其中,所述指示包括被传送至所述线程调度器的线程标识符,所述线程标识符识别定时线程。
28.根据权利要求25所述的处理器,其中,所述指示包括被传送至所述执行单元的连续点矢量,所述连续点矢量指定定时线程中重新开始执行的点。
29.根据权利要求28所述的处理器,其中,所述执行单元被构造为执行设置所述连续点矢量的设置矢量指令。
30.一种调度处理器中的线程方法,所述处理器具有接口部分和内部环境,所述接口部分包括至少一个端口和与所述端口相关联的第一寄存器,并且所述内部环境包括执行单元和线程调度器,所述方法包括:
在端口处接收当前时间值;
在所述第一寄存器中存储触发时间值;以及
将当前时间值与触发时间值进行比较,以检测当前时间值是否与触发时间值匹配;
如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示所述传送;
操作所述线程调度器以调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行;以及
操作所述执行单元,以在至少一个端口与内部环境之间传送数据。
31.根据权利要求30所述的方法,其中,处理器包括被布置为输出当前时间值的计数器,并且所述方法包括将来自计数器的当前时间值提供至所述至少一个端口。
32.根据权利要求31所述的方法,其中,所述处理器包括多个端口和多个第一寄存器,每个第一寄存器与相应的端口相关联,其中,所述方法包括将相应的触发时间值存储在每个第一寄存器中,并且由所述线程调度器实现的所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
33.根据权利要求30所述的方法,其中,所述传送包括输入操作,由此将数据从外部环境捕获至所述至少一个端口,并且所述改变包括将所述就绪信号或信号设置成第一状态,所述第一状态指示输入至内部环境的所述数据的有效性。
34.根据权利要求30所述的方法,其中,所述传送包括输出操作,由此将数据从所述至少一个端口中的每个呈现至外部环境,并且所述改变包括将所述就绪信号或信号设置成第二状态,所述第二状态指示与内部环境进一步传送数据的至少一个端口的有效性。
35.根据权利要求33所述的方法,包括操作所述执行单元以执行将数据从端口输入至内部环境的输入指令,只要所述就绪信号或信号中相应的一个处于所述第一状态,所述输入指令是所述一个或多个线程的顺序的组成指令。
36.根据权利要求34所述的方法,包括操作所述执行单元以执行将数据从内部环境输出至端口的输出指令,只要所述就绪信号或信号中相应的一个处于所述第二状态,所述输出指令是所述一个或多个线程的顺序的组成指令。
37.根据权利要求35所述的方法,包括操作所述执行单元以在完成输入指令时将所述相应的就绪信号设置成所述第二状态。
38.根据权利要求36所述的方法,包括操作所述执行单元以在完成输出指令时将所述相应的就绪信号设置成所述第一状态。
39.根据权利要求35所述的方法,其中,由所述线程调度器实现的所述调度包括暂停输入指令线程的执行,直到相应的就绪信号被设置为所述第一状态。
40.根据权利要求36所述的方法,其中,由所述线程调度器实现的所述调度包括暂停输出指令线程的执行,直到相应的就绪信号被设置为所述第二状态。
41.根据权利要求37和38所述的方法,其中,所述传送包括输入操作和输出操作,并且所述方法包括操作所述执行单元以执行输入指令和输出指令。
42.根据权利要求30所述的方法,其中,所述执行单元被构造为执行设置触发时间指令,所述设置触发时间指令将触发时间值存储在所述第一寄存器的一个中。
43.根据权利要求30所述的方法,其中,所述外部环境包括容纳有所述处理器的集成电路的至少一个引脚。
44.根据权利要求30所述的方法,其中,所述外部环境包括位于容纳有所述处理器的集成电路上的另一处理器。
45.根据权利要求30所述的方法,其中,端口与内部环境之间的数据传送包括端口与所述执行单元之间的传送。
46.根据权利要求30所述的方法,其中,所述内部环境包括总线,并且端口与内部之间的数据传送包括端口与总线之间的传送。
47.根据权利要求30所述的方法,其中,内部包括多组第二寄存器,每组存储与所述多个线程中的相应一个线程相关的信息,并且端口与内部环境之间的传送包括端口与所述第二寄存器中之一之间的传送。
48.根据权利要求30所述的方法,包括操作所述线程调度器以保持一组可运行线程,其中,由所述线程调度器实现的所述调度包括通过将一线程从所述组中去除而暂停该线程。
49.根据权利要求30所述的方法,包括使时间戳与端口和外部环境之间的数据传送相关联。
50.根据权利要求49所述的方法,其中,所述接口部分包括与所述至少一个端口相关联的第三寄存器,时间戳的所述关联包括在执行加有时间戳的传送时将当前时间值存储在所述第三寄存器中。
51.根据权利要求47、49和50所述的方法,包括操作所述执行单元以将时间戳从所述第三寄存器传送至与加有时间戳的传送相关联的线程的所述第二寄存器的一个中。
52.根据权利要求49所述的方法,包括操作所述执行单元以读取与来自端口的数据输入相关联的时间戳,并且将触发时间值设置为时间戳加上特定时间间隔,以便在所述间隔过去之后触发从端口至外部环境的数据输出。
53.根据权利要求30所述的方法,其中,所述处理器包括至少一个定时器,所述方法包括将当前时间从所述计数器传送至所述执行单元。
54.根据权利要求53所述的方法,其中,所述定时器包括第四寄存器,并且所述方法包括:
在所述第四寄存器中存储唤醒时间值,
将当前时间值与唤醒时间值比较,以检测当前时间值是否与唤醒时间值匹配,以及
如果检测到所述匹配,则产生指示,
其中,所述线程调度器实现的所述调度包括暂停定时线程的执行,直到收到所述指示。
55.根据权利要求54所述的方法,包括操作所述执行单元以响应于所述指示从所述定时器读取当前时间。
56.根据权利要求54所述的方法,其中,所述指示的产生包括将一线程标识符传送至所述线程调度器,所述线程标识符识别定时线程。
57.根据权利要求54所述的方法,其中,所述指示的产生包括将一连续点矢量传送至所述执行单元,所述连续点矢量指定定时线程中重新开始执行的点。
58.根据权利要求57所述的方法,包括操作所述执行单元以执行设置所述连续点矢量的设置矢量指令。
59.一种移动终端,所述移动终端具有移动应用处理器、至少一个外围设备、以及连接在所述移动应用处理器与所述外围设备之间的接口处理器,所述接口处理器具有接口部分和内部环境,其中,所述接口部分包括:
至少一个端口,被布置为接收当前时间值;
第一寄存器,与所述端口相关联,被布置为存储触发时间值;以及
比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与移动应用处理器或外围设备之间传送数据并改变就绪信号以指示所述传送;并且
其中,所述内部环境包括:
执行单元,用于在至少一个端口与内部环境之间传送数据;以及
线程调度器,用于调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
60.一种互连处理器阵列,所述处理器中的至少一个具有接口部分和内部环境,其中,所述接口部分包括:
至少一个端口,被布置为接收当前时间值;
第一寄存器,与所述端口相关联,被布置为存储触发时间值;以及
比较逻辑电路,被构造为检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口与阵列中的另一处理器之间传送数据并改变就绪信号以指示所述传送;并且
其中,所述内部环境包括:
执行单元,用于在至少一个端口与内部环境之间传送数据;以及
线程调度器,用于调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
61.一种具有接口部分和内部环境的处理器,其中,所述接口部分包括:
端口装置,被布置为接收当前时间值;
寄存器装置,与所述端口装置相关联,用于存储触发时间值;以及
比较装置,用于检测当前时间值是否与触发时间值匹配,如果检测到所述匹配,则在端口装置与外部环境之间传送数据并改变就绪信号以指示所述传送;并且
其中,所述内部环境包括:
执行装置,用于在至少一个端口与内部环境之间传送数据;以及
线程调度器装置,用于调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行。
62.一种用于调度具有接口部分和内部环境的处理器中的线程的计算机程序产品,所述接口部分包括至少一个端口和与所述端口相关联的第一寄存器,并且所述内部环境包括执行单元和线程调度器,所述程序包括在计算机上执行时运行以下步骤的代码:
在端口处接收当前时间值;
在所述第一寄存器中存储触发时间值;
将当前时间值与触发时间值进行比较,以检测当前时间值是否与触发时间值匹配;
如果检测到所述匹配,则在端口与外部环境之间传送数据并改变就绪信号以指示所述传送;
操作所述线程调度器以调度多个线程以便由执行单元执行,每个线程包括一系列指令,所述调度包括调度一个或多个所述线程以便根据就绪信号执行;以及
在至少一个端口与内部环境之间传送数据。
CN2008800206793A 2007-04-17 2008-04-15 定时端口 Active CN101689157B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/785,346 2007-04-17
US11/785,346 US7617386B2 (en) 2007-04-17 2007-04-17 Scheduling thread upon ready signal set when port transfers data on trigger time activation
PCT/EP2008/054530 WO2008125670A1 (en) 2007-04-17 2008-04-15 Timed ports

Publications (2)

Publication Number Publication Date
CN101689157A true CN101689157A (zh) 2010-03-31
CN101689157B CN101689157B (zh) 2012-08-22

Family

ID=39737141

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800206793A Active CN101689157B (zh) 2007-04-17 2008-04-15 定时端口

Country Status (6)

Country Link
US (1) US7617386B2 (zh)
EP (2) EP2137627A1 (zh)
JP (1) JP5222937B2 (zh)
KR (1) KR101486027B1 (zh)
CN (1) CN101689157B (zh)
WO (1) WO2008125670A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180840A (zh) * 2010-10-28 2013-06-26 国际商业机器公司 动态允许和禁止写xfr_rdy
CN103838149A (zh) * 2012-11-26 2014-06-04 瑞萨电子株式会社 微计算机

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5510000B2 (ja) * 2010-03-31 2014-06-04 ソニー株式会社 コンテンツ送信装置、コンテンツ再生システム、コンテンツ送信方法、およびプログラム
US9098270B1 (en) * 2011-11-01 2015-08-04 Cypress Semiconductor Corporation Device and method of establishing sleep mode architecture for NVSRAMs
US9104423B2 (en) * 2012-05-16 2015-08-11 Nvidia Corporation Method and system for advance wakeup from low-power sleep states
US9395799B2 (en) 2012-08-09 2016-07-19 Nvidia Corporation Power management techniques for USB interfaces
FR2996091B1 (fr) * 2012-09-21 2015-07-17 Thales Sa Noeud fonctionnel pour un reseau de transmission d'informations et reseau correspondant
TWI489237B (zh) * 2012-11-16 2015-06-21 Ind Tech Res Inst 即時取樣裝置及其方法
US9760150B2 (en) 2012-11-27 2017-09-12 Nvidia Corporation Low-power states for a computer system with integrated baseband
CN103853605B (zh) * 2012-11-28 2017-06-09 宏达国际电子股份有限公司 线程管理方法及其电子装置
US9465655B2 (en) 2012-11-28 2016-10-11 Htc Corporation Method for managing threads using executing time scheduling technique and electronic device using the same method
CN103857019B (zh) 2012-11-30 2018-01-02 辉达公司 一种在移动终端中用于省电的方法
KR102250089B1 (ko) * 2014-03-11 2021-05-10 삼성전자주식회사 레지스터 포트를 관리하는 방법 및 장치
US10203745B2 (en) 2016-03-30 2019-02-12 Qualcomm Incorporated Apparatus and method for dynamic power reduction in a unified scheduler
KR102530391B1 (ko) 2018-01-25 2023-05-09 삼성전자주식회사 외부 인터럽트를 지원하는 저전력 보이스 트리거 시스템을 포함하는 애플리케이션 프로세서, 이를 포함하는 전자 장치 및 그 동작 방법
EP3537293A1 (de) 2018-03-09 2019-09-11 Till I.D. GmbH Zeitlich deterministischer mikroprozessor und mikrocontroller
CN110427634B (zh) * 2019-05-17 2022-08-02 西南交通大学 基于fpga实现反应系统的通信系统及其构建方法
US11288072B2 (en) * 2019-09-11 2022-03-29 Ceremorphic, Inc. Multi-threaded processor with thread granularity
GB2601735A (en) * 2020-12-01 2022-06-15 Nordic Semiconductor Asa Peripheral interconnect controller

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6025952B2 (ja) * 1978-05-20 1985-06-21 アイホン株式会社 時限方式
JPH01140339A (ja) * 1987-11-27 1989-06-01 Hitachi Ltd 定時刻起動方式
JPH03208130A (ja) * 1990-01-11 1991-09-11 Nec Corp 状態遷移実行装置
JPH04315209A (ja) * 1991-04-12 1992-11-06 Mitsubishi Electric Corp マイクロコンピュータ
JPH1091431A (ja) * 1996-09-13 1998-04-10 Ricoh Co Ltd データ処理装置
US5818839A (en) * 1997-06-27 1998-10-06 Newbridge Networks Corporation Timing reference for scheduling data traffic on multiple ports
US6219741B1 (en) * 1997-12-10 2001-04-17 Intel Corporation Transactions supporting interrupt destination redirection and level triggered interrupt semantics
US6243842B1 (en) 1998-06-08 2001-06-05 Stmicroelectronics, Inc. Method and apparatus for operating on a memory unit via a JTAG port
US7171542B1 (en) 2000-06-19 2007-01-30 Silicon Labs Cp, Inc. Reconfigurable interface for coupling functional input/output blocks to limited number of i/o pins
JP3698987B2 (ja) 2000-12-18 2005-09-21 エヌイーシーコンピュータテクノ株式会社 バッファ制御装置、汎用ポート制御装置、入出力システム、情報処理装置
US7289523B2 (en) * 2001-09-13 2007-10-30 International Business Machines Corporation Data packet switch and method of operating same
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware Method and apparatus for real-time multithreading
US7673304B2 (en) * 2003-02-18 2010-03-02 Microsoft Corporation Multithreaded kernel for graphics processing unit
US7380248B1 (en) * 2004-02-26 2008-05-27 Sun Microsystems, Inc. Queue alerts
JP2006048241A (ja) * 2004-08-02 2006-02-16 Hitachi Ltd 組込み制御装置
US7406550B2 (en) 2005-01-27 2008-07-29 Innovasic, Inc Deterministic microcontroller with configurable input/output interface

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103180840A (zh) * 2010-10-28 2013-06-26 国际商业机器公司 动态允许和禁止写xfr_rdy
CN103180840B (zh) * 2010-10-28 2015-05-20 国际商业机器公司 动态允许和禁止写xfr_rdy的方法和系统
CN103838149A (zh) * 2012-11-26 2014-06-04 瑞萨电子株式会社 微计算机
US9928184B2 (en) 2012-11-26 2018-03-27 Renesas Electronics Corporation Microcomputer
US10474598B2 (en) 2012-11-26 2019-11-12 Renesas Electronics Corporation Microcomputer

Also Published As

Publication number Publication date
KR20100016636A (ko) 2010-02-12
CN101689157B (zh) 2012-08-22
US7617386B2 (en) 2009-11-10
US20080263318A1 (en) 2008-10-23
EP3349120B1 (en) 2019-02-20
WO2008125670A1 (en) 2008-10-23
JP5222937B2 (ja) 2013-06-26
EP2137627A1 (en) 2009-12-30
JP2010525436A (ja) 2010-07-22
EP3349120A1 (en) 2018-07-18
KR101486027B1 (ko) 2015-01-28

Similar Documents

Publication Publication Date Title
CN101689157B (zh) 定时端口
US7613909B2 (en) Resuming thread to service ready port transferring data externally at different clock rate than internal circuitry of a processor
CN101681262B (zh) 用于执行线程的处理器及方法
EP2165253B1 (en) Data transfer between thread register sets
EP2165254B1 (en) Synchronisation in a multithreaded processor
US8219789B2 (en) Interface processor
US9367321B2 (en) Processor instruction set for controlling an event source to generate events used to schedule threads
CN104375820A (zh) 事件驱动的处理器及其运行方法
WO2008110804A1 (en) Processor instruction set
EP2137613B1 (en) Processor register architecture

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