接口处理器的制作方法

文档序号:6477169阅读:408来源:国知局
专利名称:接口处理器的制作方法
技术领域
本发明涉及接口处理器,该接口处理器是特别用于但不专门用
于与其他处理器或外部i殳备4妄口的处理器。
背景技术
处理器i殳计者面临的一个4兆战是处理婆t目持续增加的要与处 理器通信的外部设备。通常,这是通过为处理器提供某些类型的中 断处J里能力(interrupt handling capability )实i见的,该处理器处理连 一接到外部i殳备的端口产生的活动。日益增加;也,更为复杂性的4姿口 逻辑^皮用于这些端口来处理,例如,每个端口的多个外部i殳备。
大量不同情形中都需要接口 。这里作为背景例子讨论的 一 个情 形是移动应用处理。
图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。系统还包括功率控制器IO和无线电处理器12。注意所示接口控制器6多少具有示意性,但通常表示某些类型 的专用I/O逻辑或特别配置的端口 。
传统上,外部接口是用中断或利用轮询实现的。在使用中断时, 外部外围设备发送信号告知处理器其有数据准备好输入给处理器 或向处理器要求数据。在使用轮询时,处理器不断检查设备的状态 从而确定是否设备准备好冲是供或接受凄t据。
如图1所示的应用程序处理器2的一个可能的实施是4吏用专用 集成电路微控制器(ASIC)。 ASIC是硬连线的设备,其可能包括专 用于特定应用以及经优化适于该应用的孩i处理器。对于纟合定的功 能,与其他选择相比,它们通常更便宜并且能耗更低。然而,它们 设计复杂,必须预i殳计且不能容易地重配置。
另一种可能是4吏用现场可编程门阵列(FPGA)i殳备。FPGA 是半导体i殳备,其可在制造后现场配置。为了配置FPGA,首先利 用计算机建^^所需的逻辑功能,例如通过绘制示意图或创建描述功 能的文本文件。FPGA包括经静态配置的互连线进行通信的查询表 阵列。计算机模型是用FPGA卖家提供的软件编译的,这产生能够 下载到FPGA查询表的二进制文件。这允许装备制造商i殳计FPGA 从而满足其自身的个性化需要。
在该例子中,接口控制器6作为FPGA实施。这具有这样的益 处,即移动电话制造商可购买通用FPGA设备2,然后在当场(即 "现场,,)将其配置成专用于他们所需要应用的。然而,FPGA的缺 点是与ASIC相比更为昂贵,速度更緩慢以及能耗较高。
在可选的例子中,整个芯片2可以用FPGA实现,或芯片2可 以是具有连接在芯片2和各外围设备8之间的分离的FPGA芯片的通用目的处理器。然而,这些选4奪可能更为昂贵以及功库毛更高—— 限制了多数移动电话和其他消费电子设备。
以ASIC的价格、速度、范围和能耗水平实现FPGA的可配置 性会是有利的。

发明内容
按照本发明的一个方面,提供了一种处理器,其包括第一端 口,该第一端口用于基于第一端口处的第一活动生成第一指示;第 二端口 ,该第二端口用于基于第二端口处的第二活动生成第二指 示;才丸行单元,其被设置为冲丸行多个线程;线程调度器(thread scheduler ),其被连接以接收所述指示以及被设置为调度所述多个线 程用于执行单元基于所述指示而执行,所迷调度包括暂停 (suspending)线程的执行直到接收到相应指示;其中第一活动和 第二活动分别与各相应线程关联。
因为每个线程与各端口处的活动相关耳关,以及线程调度器被连 接以暂停该活动的线程等待(pending)指示,则处理器有利地"预 先准备好"以快速响应发生在端口的活动。因此本发明冲是供了在需 要快速响应外部激励的应用中的显著改进。另外,在线程被暂停时, 如果仍然要调度其他线程,则线程调度器可开始调度这些线程。
在要求快速反应时间时,暂停的线程方法对使用中断是优选 的。使用暂停的线程,线程调度器可准备执行预期关联活动的线程, 如上面讨论的那样,这意味着处理器做好了反应的准备。相反,使 用中断,执行单元由来自外部设备的信号中断,同时执行某些潜在 无关代码。在中断情形中,当前程序状态必须在中断起作用前被保 存。因此,使用中断的反应时间非常慢。轮询的能量效率较低,因 为要求不断的询问和应答。
15线程调度器可设置为将与暂停等待第一事件的第一线程相关的第一线程标识符传输到与第一端口关联的标识符寄存器。线程调度器可设置为将与暂停等待第二事件的第二线程相关的第二线程标识符传输到与第二端口关联的标识符寄存器。在这样的实施例中,线程调度器适于管理线程的执行,但在其遇到取决于特定活动的线程内指令时,线程调度器可有利地通过将其责任传给各与其关
联的端口而"抽t开(set aside )"线程。这也有助于反应时间。
线程调度器可设置为在暂停所述第一线程后将连续点矢量(continuation point vector )传送至与第一端口关l关的矢量寄存器;且连续点矢量可根据第一活动返回给执行单元。连续点矢量标识代码中某个点,在各活动发生时执行应在该点继续。这可有利地允许线程额外的责任(responsibility)发送到端口,以及可释方文不必以等待(pending)指令填充的指令緩冲器。
另外,使用连续点矢量可允许每个线程处理多个活动(或事件)。因此,第一线考呈可与来自多个端口的活动关^:,每个端口用于生成依赖于该活动的各指示;执行单元可适于传输多个连续点矢量的每个至各所述多个端口之一,各连续点矢量是才艮据各活动返回的,且线程调度器可适于暂停第一线程的执行,直到接收各指示中的至少一个。
一旦暂4亭线程的所有线程标识符传llr到端口,处理器可以关闭
(power down )执行单元、线程调度器和时钟中的至少一个。当从各处理器端口返回至少一个线程标识符时,处理器可以上电(powerup)所述"^U亍单元、线程调度器和时钟中的至少一个。因此,如果所有线禾呈已经调度以及4要各端口活动交纟合各端口 ,然后处理器可以关闭部分或全部组件直到发生 一个活动。这显著改善系统的功耗。
16第一和第二端口中至少一个可包括活动处理逻辑以及可与至
少一个用于存储条件的条件寄存器(condition register)关联,活动
处理逻辑4皮i殳置为用于监一见端口的活动以及才艮据满足所述条件的所述活动生成所述指示。执行单元可设置为传送各条件至每个条件寄存器。有利地,这通过允许线程调度器为端口提供条件改善了系统的通用性,以使端口可处理更特殊的和多样的条件类型。
端口事件启用标记可与第一端口关耳关,且线程调度器可适于通过使端口事件启用标记有效(assert )使得所述第一活动触发所述调度,以及通过4吏端口事件启用标记无效(de-assert)而禁止第一活动触发所述调度。线程事件启用标记可与第一线程关耳关;而线程调度器可适于通过使线程事件启用标记有效,根据第一活动使第一线程能够被调度,以及通过使线程事件启用标记无效,根据第一活动禁止调度第一线程。线程调度器可适于暂停第一线程的执行,该第一线程等待来自端口的第三活动的第三指示,同时端口事件启用标记和线程事件启用标记中至少一个净皮无效。
端口事件启用标记和线禾呈事件启用标记中至少一个可纟皮第一活动的生成自动无效。
多个各自端口事件启用标记可与多个与第 一线程关联的端口中的每个关联;且线程调度器可设置为使线程启用标记有效,以及随后4吏所述多个端口事件启用标记有岁文。
处理器可包括由总线连接到执行单元的程序存储器,其中线程
调度器通过至少一个与所述总线分离的连接而连接以^妄收来自第一和第二端口中每个端口的所述指示。这消除了端口和线程调度器
间的通信中总线仲裁的需求,因此进一步改善处理器的反应时间。处理器可包括多个线程寄存器组,每组线程寄存器都被分配来存储关于所述多个线程的各个线程的信息。处理器可包括在至少两组所述线程寄存器间的至少一个通道,且线程调度器可适于根据在所述通道上发生的活动调度线程。
处理器可在芯片上实施。所述第一和第二端口中的至少一个可以是与所述芯片上另一个处理器通信的内部端口。所述第一和第二端口中的至少一个可以是与所述芯片外部设备通信的外部端口。至
少一个外部端口可以是用于检测出现在芯片物理边界处引脚(pin )上的信号的上升沿或下降沿的引脚端口 。至少 一个外部端口可以是用于处理端口处一一、或多/卜1立的瞬时逻4專电平(logic-level )的凝:才居端口 。
执行单元可适于识别和执行用于暂停和运行线程的专用指令。
线程调度器还可以适于基于中断对线程进行调度。基于中断祐:
调度的线程是第一线程,当暂停时该中断将第一线程中断。
如果关联活动发生在耳又决于该活动的线程内的指令4丸行时或执行之前,则线程调度器可适于调度线程而无需暂停。
根据本发明的进一步方面,提供了调度多个线程的方法,用于
具有第一和第二端口的处理器中的执行(execution),该方法包括将第一端口的第一活动及第二端口的第二活动与各相应线程相关联;4艮据第一活动在第一端口生成第一指示;才艮据第二活动在第二端口生成第二指示;基于所述指示调度线程用于执行,所述调度包括暂停线程的执行直到接收各指示;以及根据所述调度通过执行线禾呈而运4亍线禾呈。根据本发明的另一个方面,提供了端口,用于调度多个线程以
便执行,该端口包括活动处理逻辑电路,设置为根据端口处的活动生成指示,寄存器,存储用于识别与所述活动关联的线程的信息,以及寄存器,用于存储一个条件;其中所述活动处理逻辑电路适于在所述活动满足所述条件时传输芯片上第 一指示。
根据本发明的另一个方面,提供了线程调度器,其用于调度具有第一端口和第二端口的处理器内多个线^£以用于4丸4亍,其中该线程调度器适于接收第一端口根据第一端口的第一活动生成的第一指示;该线程调度器适于接收第二端口根据第二端口的第二活动生成的第二指示;且线程调度器适于基于所述指示调度所述多个线程用于通过该单元才丸4于来执行,所述调度包括暂4亭线程的#1行直到*接收各指示;其中第一活动和第二活动中的每一个都与各相应线程关联。
按照本发明的另 一个方面,提供了具有移动应用程序处理器的移动终端,至少一个外围设备,和连4妾在移动应用程序处理器与外围设备之间的接口处理器,接口处理器包括第一端口,根据第一端口处的第一活动用于生成第一指示;第二端口,冲M居第二端口处的第二活动生成第二指示;执行单元,设置为执行多个线程;和线程调度器,被连接以接收所述指示以及设置为根据所述指示调度所述多个线禾呈用于该冲丸4亍单元才丸4亍,所述调度包括暂停线禾呈的冲丸4亍直到接收各指示;其中第一活动和第二活动中的每一个都与各相应线程关联。
按照本发明的另一个方面,提供了互连处理器阵列,至少一个所述处理器包括用于^^艮据第一端口处的第一活动生成第一指示的第一端口;用于才艮据第二端口处的第二活动生成第二指示的第二端
口;设置为执行多个线程的执行单元;以及线程调度器,被连接以接收所述指示以及被设置为基于所述指示来调度所述多个线程用
19于该执行单元执行;所述调度包括暂停线程的执行直到接收到各个指示,其中第一活动和第二活动每个都与各相应线程关联;以及所
述第一和第二端口中的至少一个连4妄阵列中至少一个处理器和另一个处理器。
为了更好地理解本发明以及示出其如何实施,作为例子要参考相应附图。


图1示出本领域已知的应用FPGAi殳备的例子;图2示出接口处理器的应用例子;图2a示出冲妾口处理器的另一个应用例子;图3是接口处理器架构的示意表示;图4是端口的示意表示;图5是线程寄存器组的示意表示;图6是示出线程调度器操作的流程图;图7是线程寄存器组间通道的示意图;以及图7A是通道末端(channel end )的示意图。
具体实施例方式
图2示出移动电话中接口处理器的示例性应用。移动应用处理器2需要与多个外围设备8通信。如图1所示,应用处理器2包括总线3, CPU 4,以及与硬驱(HDD) 8a和SDRAM存储器8b接口的存储器控制器6a,以及功率控制器IO和无线电处理器12。
然而,取代专用控制器6,图2的装置允许CPU4经通用端口7与外部通信。在该例子中,提供了通用端口 7a和7b用于与摄像机8c和LCD显示器8d接口 ;提供了通用端口 7c用于与麦克风8e、扬声器8f和耳机8g接口;提供了通用端口 7d用于与键盘8h、通用串行总线(USB)设备8i、安全数字(SD)卡8j、多媒体卡(MMC)8k,以及通用异步接收器/发射器(UART)设备81接口。
在图2中,4妄口处J里器14a、 14b和14c i殳置在相关端口 7的输出处,其中第 一接口处理器14a连接在图像设备8c - 8d和通用端口 7a- 7b之间,第二4妄口处理器14b连接在4见频i殳备8e - 8g间,以及第三接口处理器14c连接在通用端口 7d和不同连接设备8h-8m间。端口 7仅需要是一般用途端口,因为专用显示器,音频和连接功能是由接口处理器14a- 14c以后面详述的方式实现的。端口7不需要4吏用FPGA逻辑电^各,因为接口处理器14^是供灵活性和可配置性,否则要由FPGA提供。接口处理器14a具有连接到端口 7a和7b的端口 22a和22b,连4妄到外部i殳备8c和8g的端口 22c, 22d,22e和22f。接口处理器14b和14c具有类似端口,图2中没有示出。
接口处理器通常涉及执行用来经4矣口发送lt据的特定协议,再格式化数据包括将数据在并行格式(parallel format)和串行格式(serial format)间进行转换,以及可能的更高水平功能,如对其编石马、压缩或力口密。
4妻口处理器的另一个应用是在图2a中所示的多处理器芯片202中作为核(tile)。这样的芯片202 4吏用高性能互连204,该高性能互连204支持芯片202上处理器14和芯片间链路206之间的通信
21以便系统可容易地由多个芯片构造。每个处理器14经端口 22连接到其芯片间《连3各206和高性能互连线204。
下面更充分讨论的接口处理器的重要特征是其管理端口 22处的活动的能力。每个接口处理器包括CPU、存储器和通信器。为了允许CPU与端口间的直接连接和响应性连接,每个处理器具有用于才丸4亍大量同时禾呈序纟戈禾呈(concurrent program threads )的石更Y牛支持,每个都包括指令序列,以及至少其中 一些专门负责处理端口的活动。如下面更详细的讨论,硬件支持包括
-用于每个线程的寄存器组,
-动态选择执行哪个线程的线程调度器,
-用于输入和输出的端口组(端口 22 ),
每个处理器上4吏用一,卜组线程可用来允许通信或输入/输出以与处理器处理的其他等祠:任务一起进4亍,以及通过当其他线程暂停等待与远程接口处理器间通信时允许某些线程继续而允许互连中等待隐藏(latency hiding )。
图3示意地示出根据本发明一个实施例的接口处理器14的示例性架构。处理器14包括在线程调度器18控制下执行指令线程的^Vf亍单元16。处理器14还包括^f呆存程序^C码和其他^t据的随4几存取存储器(RAM) 24,以及用于存储诸如起动代码(boot code)的永久信息的只读存储器(ROM)(未示出)。
线程调度器18动态选择哪个线程应由执行单元16执行。传统上,线程调度器的功能将仅从程序存储器中调度线程,以便保持处理器一皮完全占用。然而,按照本发明,线程调度器18的调度也涉及端口 22处的活动。这方面应该注意的是,线程调度器可直接耦 合到端口 22以便在线程由于端口处的输入或输出活动而变得可运 行时最小化延迟。
线程调度器18考虑的m个线程中的每个线程由线程调度器18 存耳又的寄存器库(bank) 20中各组线程寄存器20卜.20m表示。还 被提供了指令緩冲器(INSTR) 19用于在将从存储器24取出的指 令传入纟丸行单元16之前临时4呆存该指令。这些寄存器和緩沖器的 细节在下面讨i仑。
m个线程中,线程调度器18保持一组n个可运行线程,该组 线程纟皮称为"运4于",线程调度器/人该组中优选地以循环方式 (round-robin manner )依次才是耳又指令。当线程不能继续时,则通过 将其从运行组中移除而4吏其暂停。其原因可以是例如,因为线程正 等待一个或多个以下类型的活动
-在线程能够运^f于之前其寄存器^皮初始化,
-线禾呈尝试,人未就绪或没有可用凄t据的端口输入,
-线程尝试对未就绪或没有用于凄t据的空间的端口输出,
-线程执行了引起线程等待一个或多个事件的指令,该事件可 以是端口准备好llT入时生成的。
注意这里所用的术语"事件"是指特殊类型的操作,其与基本 输入-输出操作稍有不同。下面结合图4和5讨i仑所述的区别。
有利地,为了有助于快速反应时间,在线程调度器18和执行 单元16之间提供直接硬线连接28,以允许线程调度器18控制执行 单元16应耳又出并寺丸4亍哪个或哪些线程。直^妄石更线^各径30a, 30b,
2330c也才是供在线程调度器18和每个端口 22之间;以及在线禾呈调度 器18和每个寄存器20之间提供直接硬线路径29卜.29m。这些直接 路径优选地提供控制路径,其允许线程调度器将各线程与一个或多 个端口 22相关联,以及特别地当某些活动发生时从端口返回就绪 指示,这样允许处理器快速响应发生在端口 22的活动或激励。线 程调度器涉及端口的操作将在下面结合图4和6讨论。
执行单元16还通过直接连接27和31访问每个端口 22a - 22c 以及每个寄存器20广20m,因此在芯处理器、寄存器、和外部环境 间提供了直接链接。优选地,这些直接路径提供进一步的控制路径 以允许执行单元将条件发送给端口。这将在下面结合图4进一步详 细讨论。直接路径27和31也可允许数据在线程调度器20和端口 22间直接输入和输出,因此允许线程直4妄与外部环境通信。例如, 数据可直接从外部设备写入到线程的搡作数寄存器之一 ,而非写入 到存储器24以及随后从其中取出。相反,在一次运算之后,来自 才栗作数寄存器的数据可由冲丸行单元16拾取并直接发送出端口 22。 这显著改善了反应时间。
值得注意的是"直接连接"或"直接路径"表示与执行单元和 程序存储器24之间的连接相分离的连接。因此,例如线程调度器 18和执行单元16可存取从端口 22输入的数据,而不必将数据存储 在存储器24中以及随后从其中取出。特别地,如果4丸行单元16和 存储器24之间是通过总线3连接的,则"直接"连接或路径意味 着与总线相分离的连4娄或^"径。因此,端口 22、寄存器20、线^呈 调度器18和执行单元16间的各种通信都可发生而无需总线仲裁, 改善反应时间。端口 22还可提供与总线13的额外连4妄(未示出)。
本申请中所用的术语"端口"可指"针式端口 (pin port)"或 "数据端口"。针式端口负责检测单独的逻辑变换,即发生在处理 器芯片物理边界处引脚上的信号的上升沿和下降沿。数据端口是"更高层次(higher level )",因为它们可处理一个或多个^f立,通常 累加在I/0緩冲器中,以及通常构成凄t据的一部分,如字。不用枱r 测上升沿和下降沿,数据端口处理特定瞬间的一个或多个位的状态 或逻辑电平。数据端口可以是开/关芯片(on/offchip),或可以是对 嵌在同一芯片上的另一处理器的端口。注意"针式端口"和"数据 端口"实际上可指同一实际端口的不同才莫式。
图4示意地示出按照本发明优选实施例的端口 22。端口 22包 括I/O緩沖器32用于发送来自或者送往处理器14的数据。此外, 每个端口 22包括活动操纵逻辑36用于监一见发生在端口的活动以及 利用至少一个就绪数位或标记37将特定活动的发生信号化。就绪 标记37优选地通过直接路径30发信号告知线程调度器。端口可检 测的潜在活动包括
-凄t据已经^T入到端口
-某些特定凄t据已经输入到端口 ,以及/或
-端口已经可用于输出。
is
为了有助于对这些活动的检测,端口 22被提供了一组寄存 38。这些包括线程标识符(TID)寄存器用于存储相关线程的标识 (identification),控制(CTRL)寄存器用于存储一个或多个条件, 连续点矢量(VECTOR )寄存器用于存储程序中执行被暂停的位置,
由线程调度器18通过直接3各径30 (图3中直4妄路径是30a, 30b, 30c)写入到寄存器38中,以及值VECTOR、 CTR和DATA是由 执行单元16通过直接路径31写入的。 一旦检测到所需活动,TID 返回到线程调度器18,以便识别关联的线程。活动逻辑还包括下面 进一步详细讨论的启用标记39。注意,虽然图4中所示寄存器38包含在端口 22内,它们实际 上可位于处理器14中任何其他地方并仅与端口 22关联。
图5示出用来表示线程的示例性线程寄存器库20。寄存器库 20包括对应于当前由线程调度器18所考虑的各线程Ti到Tm的多 个寄存器组。在该优选例子中,每个线程的状态由18个寄存器表 示2个控制寄存器,4个存取寄存器和12个操作数寄存器。这些 寄存器分别如下
控制寄存器
-PC是程序计数器
-SR是状态寄存器 存取寄存器
- GP是全局公用指针(global pool pointer ) -DP是数据指针
- SP是栈指针
-LR是链接寄存器 才喿作凄t寄存器OPl…OP12
控制寄存器存储关于线程状态以及用于控制线程执行的信息。 特别地,线程接受事件或中断的能力由保存在线程状态寄存器SR 中的信息控制。存取寄存器包括用于进程的局部变量的栈指针,通 常用于进程间共享数据的数据指针,以及用于存取大常数和进程入
26口点 (procedure entry points ) 的常数公用指针 (constant pool pointer )。操作数寄存器OPl.. .OP12由指令使用,该指令执行算术 和逻辑纟喿作,存:f又数据结构,以及调用子程序。
还提供了大量指令緩沖器(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有效。此外,为了4吏线^f呈自身4妄受事件,线 程的各状态寄存器SR中的线程事件启用(EE)标记必须祐:i殳定为 事件启用的。 一旦事件这样i殳定并启用,线程就可以-使用基于事件 (event-based)的等待指令暂停等待事件,该基于事件的等待指令 作用于线程调度器18。此时,当前等待指令可从相关指令緩沖器 19中丢弃。当事件发生,如某些数据输入到端口时,通过从端口 22返回到线程调度器18和执行单元16的线程标识符和连续点矢 量,信号告知该发生,允许连续点矢量处的指令从程序存储器24 取出以及存入指令緩冲器19,以及执行在代码中适当位置点继续。当事件发生时,各状态寄存器SR中线程EE标记可设定为事 件禁止以防止线程在事件发生后立即对事件做出反应。作为事件发 生时线程执行指令的结果,启用标记39可纟皮无效。
在准备等待来自一个或多个端口的事件中设置多个端口时,可 以^f吏启用标记39有效。线程EE标记还可在启用 一组端口启用标记 前^殳定为事件启用(event-enable)的,以及在该情形中就绪的即将 启用的第一端口将生成事件,该事件通过在连续点矢量立即取出以 及执行指令使得当前指令被丢弃以及继续执行。
端口启用标记39和状态寄存器EE标记的优点在于事件的启 用和禁止是与事件设立和通过等待指令暂停线程分离的,允许不同 输入和输出条件准备好用于特定线程和/或为各种不同线程开启和 关闭(toggled on and off )。例如,事件可以被留作在端口 22建立, 即使事件被禁止。因此,事件可以由线程重复使用,因为虽然事件 已经发生过一次,但是线程标识符,连续点矢量和条件仍然存储在 端口 22的TID, VECTOR, CTRL和DATA寄存器38中。因此, 如果线程需要重复使用事件,端口寄存器38不需要重复写入,相 反,端口的启用标记39能够简单地被再次有效,以及/或者线程的 状态寄存器SR中EE标记可再次设置为事件启用的。另一个等待 指令将暂停等待同 一事件再次发生的线程。
而且,使用连续点矢量允许每个线程启用多个事件。也就是说, 纟合定的线程可通过将连续点矢量发送到一个端口 22a而在该端口建 立一个事件,通过将不同的连续点矢量发送到另一个端口 22b而在 该端口建立另一个事件,如此类推。线考呈也可通过分别为各端口^f吏 不同的启用标记39有效或者无效来逐个启用或禁止各个事件。等 待指令将使线程暂停等待任何启用的事件。与事件相比,使用基本I/0操作,线程调度器18不传输连续点
矢量给VECTOR寄存器,且不使用端口的启用标记39或状态寄存 器SR中的EE标记。相反,等待指令仅留在指令緩沖器19中,且 如果需要,才艮据就绪标记37的指示,^又将冲丸^f亍中止以等待输入或 端口输出的可用性。在实施例中,仅要求TID寄存器按照基本I/O 进行调度。基本I/O可以使用或不使用CTRL和DATA寄存器中的
条件。如果不使用这样的条件,端口一准备好i/o就会完成。
还须注意的是, 一旦在事件之后恢复执行线程,则当然随后可 执行基本I/0操作。相反, 一旦线程在基本I/O后继续,则其随后 可包括事件才乘作。4壬何这类事件和I/O都可包4舌在线程中。例如, 基本I/O操作可在两个基于事件的等待操作间交叉进行,同时事件 #皮禁止(即,端口启用标记39和/或状态寄存器的EE标记一皮无效), 但事件矢量和条件仍然留作在寄存器38中设置。也就是说,事件 可在完成第一个基于事件的等待操作后禁止,基本1/0随后用同一 端口执行,以及然后同一事件被再次启用用于在第二个基于事件的
等待才喿作。如上所述,基本i/o操作中止和解除中止该线程,但不
影响端口的启用标记39或状态寄存器中的EE标记,也不发送控制 到事件矢量。
下面参考图6的流程图i兌明线程调度器和两个示例性端口的操: 作。在步骤100, ^U于单元16在线程调度器18的指导下开始执4亍 第一和第二线程。在步骤102,线程调度器遇到第一线程内以事件 为条件的部分代码,例如接收端口 22a处的某些特殊信号。在步骤 104,线程调度器发送第一线程的线程标识符(TID)和连续点矢量 (VECTOR)到端口 22a,该连续点矢量指定一旦4企测到事件则线 程的执行应该在程序中的哪个点继续,以及任何需要的条件控制信 息(CTRL)和关联的凄t据(DATA)。例如,lt据可以是指令预期 在端口接收的信号的值。在步骤104,线程调度器还可设置第一端口的启用标记39以及将第 一线程的状态寄存器SR设置为事件启用的。
在步骤106,端口 22a从线程调度器18接收该信息。在步骤 108,线程调度器18暂停第一线程的执行。在步骤110,端口 22a 开始监^L端口处的活动。
在步艰《112,线程调度器18确定第二线程仍未完成 (outstanding)且执行单元16继续在线程调度器18的指导下执行 第二线程。在步骤114,线程调度器18遇到以事件为条件的部分代 码。在步骤l16,线程调度器18发送线程标识符和连续点矢量以及 任何其他要求的条件信息至端口 22b。在步艰《116,线程调度器还 可设置第二端口的启用标记39以及将第二线程的第二状态寄存器 设置为事件启用的。在步骤118,端口 22b"f妄收该信息。在步骤120, 线程调度器暂停第二线程的执行。在步骤122,端口22b开始监视 发生在端口的活动。
在步骤124,线程调度器确定当前不再有需要调度的未完成的 线程,以及系统关闭除端口 22a和22b以外的所有组件。在步骤128, 端口 22a检测到相关事件,例如收到存储在DATA寄存器中的信号, 以及因此返回线程标识符(TID)以及续点矢量(VECTOR)(以及 将第一线程的状态寄存器设置为事件禁止)。在步骤126,线程调度 器18接收返回的标识符。现在执行可以继续,那么在步骤130,系 统再次上电。在步骤134,执行单元16在线程调度器18的指导下 完成第一线禾呈的扭^亍。在步-骤138,端口 22b为第二线禾呈4企测相关 事件以及返回其线程标识符以及连续点矢量(以及将第二线程的状 态寄存器设置为事件禁止)。在步骤136,线程调度器18接收返回 的信息,在步-骤138, 4丸4于单元16在线程调度器18的控制下完成 第二线程的执行。注意在步骤134和136间可以有额外的断电步骤。
30如图7所示,本发明的原理也可扩展到线程间的通信,或更精
确地,线程寄存器组20 (其存储表示线程的信息)间的通信。为了 说明的目的,仅4个线程寄存器组20!到204在图7中示出,每个 存储各线程T!到T4的信息。每个线程寄存器组都通过互连系统40 连才妻到各其他组,互连系统用于建立至少一个通道用于直4妾在至少 两个线程寄存器组20间发送数据。通道优选地用来与操作数寄存 器OP交换数据,但原则上用来与(诸如状态寄存器SR的)其他 类型的寄存器交换信息。线程调度器18可基于发生在通道上的活 动以如上述的与端口相关的类似方式来调度线禾呈。
如图7A所示,每个通道末端42像一对端口 ,具有输入緩沖器 44和输出緩冲器46。类似于端口 22,每个通道输入緩冲器44和输 出緩沖器46可具有活动处理逻辑36,用于监一见发生在通道上的活动 以及通过至少一个就绪标记37,来发信号告知某些活动的发生。通 道末端可4企测的潜在活动包括数据已经输入到通道,或通道已经 可用于输出。如果在通道太满而不能提取数据时执行输出指令,则 执行指令的线程被中止,以及在通道中有足够空间用于指令成功完 成时再开始。类似地,当指令被执行且没有足够的数据可用时,线 程被中止以及当有足够数据可用时再开始。
再如端口 22 —样,为了有助于对这样的活动的4企测,每个通 道末端与寄存器38,关联。这些寄存器包括用于存储相关线程标识 的线程标识符(TID)寄存器,以及用于存储根据事件的发生执行 应该在程序的哪个位置继续的连续点矢量(VECTOR)寄存器。这 些TID和VECTOR寄存器可由线程调度器18以及执行单元16使 用从而以与端口 22相同的方式调度线程。VECTOR寄存器允许通 道生成事件以及中断。通道末端还具有启用标记39,用于启用通道 以生成事件。在实施例中,通道末端42可以不具有CTRL和DATA 寄存器。送到外部环境。也就是i兌,纟丸4于单元16可经通道末端42^合耳又寄存 器20的内容并经端口 22将其直接传出;相反,执行单元16还可 以从端口 22接收输入以及经通道末端42将其直接发送给寄存器 20。因此,如果4安照本发明的两个或多个接口处理器连接到一起, 例如图2A中所示,通道也可在这些处理器间建立。在处理器间系 统内,每个处理器可以通过"i午多双向物理链3各204与系统互连相4妄 口,这允许与其他处理器同时连接。
这里使用的包括端口、通道以及活动的其他源的总术语是"资源"。
*接口处理器可支持几种编程方法,这是由于其基于线程的结 构。4妻口处理器可以作为#1行标准输入和输出的单个常*见处理器, 或可编程为数百个通信组件并行阵列的一部分。本发明提供了支持 这些可选做法的指令集合。指令集合包括支持初始化、终止、开始 和停止线程以及提供输入/输出通信的特殊指令。输入和输出指令允 许与外部设备非常快的通信。它们支持高速,低时延输入和输出以 及高级协同编程技术。这里它们用于处理端口活动,这将在下面更 充分地讨论,其中说明了用于实施本发明的示例指令。
首先为使用GETR指令的线程预留资源,GETR指令指定了所 要求的资源类型,并可用FREER指令再次释放。
端口可用于输入或输出模式。在输入模式中,条件可用来过滤 发送到线程的lt据。如下面所述,在婆t据可用时,端口可用来生成 事件或中断。这允许线程监纟见几个端口 ,仅为就绪的端口服务。然 后一旦端口就绪,|#入和输出指令,IN和OUT可用来发送H据进 出端口 。在该情形中,IN指令输入以及零扩展(zero-extends ) n位 端口中n个最不重要的位,OUT指令输出该n个最不重要的位。两个另外的指令,INSHR和OUTSHR优4匕f史据传l俞。INSHR 指令将寄存器内容向右移n位,用从n位端口输入的数据填补最左 边n位。OUTSHR指令输出数据的n个最不重要的位至n位端口以 及将寄存器内容向右移n位。
OUTSHR port, s port <] s[bits 0 for width(port)]; 乂人其丰lr出
s — s 〉〉 width(port) 端口和移位
INSHR port, s s — s 〉> width(d ); 移位和输入
port > s[bits (bitsperword — width(d)) for width(d)] 来自端口
其中表示输入,表示输出。
端口在可使用前必须被配置。端口是用SETC指令配置的, SETC指令被用来定义端口的几种独立i殳置。每种i殳置都具有缺省 模式,且仅在需要不同模式时要配置。
SETC port, modeport[ctrl] <~ mode i殳置端口4空制
下面说明SETC模式设置的效果。每种设置的首项是缺省模式。
模式 效果
OFF 端口不有岁丈,4十肚卩高阻4元
ON 有效
IN 端口是输入
OUT 端口是丰lr出U旦llT入返回当前4十脚1直(pin value))EVENT 端口将引起事件
INTERRUPT 端口将唤醒(raise )中断
DRIVE
PUIXUP UNCOND EQUAL NE
针脚被高电平和低电平驱动
PULLDOWN 4十肚卩下^立电平用于(H立,否则为高阻4元
针脚上^立电平为用于1位,否则为高阻抗
端口始终就绪,输入立即完成
当端口值等于其DATA值时端口就绪
当端口^f直不同于其DATA ^直时端口 ;t尤绪
TRANSITION 当端口 ^f直向其DATA ^直 夂变时端口章尤绪
GR
当端口 ^直大于其DATA ^直时端口就绪
当端口值小于其DATA值时端口就绪
DRIVE, PULLDOWN和PULLUP才莫式<又在端口方向为OUT 时相关。TRANSITION条件^又对1位端口相关,以及GR和LS条 件l又^j" 1位以上的端口相关。
每个端口具有就绪位37,其用来控制通过端口的ft据流,以及
定义端口是否能够完成llr入或llr出指令。才艮才居端口配置以不同方式
设置就绪位。在SETC, SETD或SETV中任意指令被执行时,就 绪位被清除。输入才莫式中端口可配置为扭J亍条件输入。条件过滤输入凄丈据, 以便仅使符合条件的数据返回给程序。当条件被设定时,IN和
INSHR指令将仅在端口就绪时完成。如上所述,在未就绪端口上执 行输入指令将中止线程。在就绪时,端口设定其就绪位,这通过信 号告知线程调度器。线程继续以及再才丸行输入指令。这次端口是就 绪的,数据被返回以及就绪4立37 ^皮清除。
一旦设定端口就绪位,满足条件的H据佳J皮捕获,因此软件获 得满足条件的值,即使端口上的值随后改变。当IN或INSHR指令 被执行以及就绪位被设定时,则返回数据以及清除就绪位。如果就 绪位没有一皮i殳定,则线程^皮中止直到就绪位^皮i殳定。如果条件^皮i殳 定,则数据与条件比较,以及就绪位仅在满足条件时设定。
在执行OUT或OUTSHR指令时,如果就绪位被清除,则端口 提取数据以及就绪位被设定。如果就绪位被设定,则线程中止直到 就绪位一皮端口清除。
为了在两个线程间通信,需要分配两个通道末端,每个线程一 个。这是用GETRCHAN指令执行的。两个线程可4吏用资源标识符 通过使用输出和输入指令来传输数据字
OUT d <1 s
IN d <] s
如果输出指令是在通道太满而不能提取数据时执行的,则执行 指令的线程被中止。当通道中有足够空间用于成功完成指令时,继 续执行指令。类似地,当输入指令被执行以及有足够的可用数据时, 线程暂停以及当有足够数据可用时重新开始寺丸4亍。当不再需要时, 可用FREE CHAN指令释方文通道。否则通道可用于其他信息。
35事件和中断允许资源(端口和通道)自动将控制发送到预定的
事件控制器(handler )。线程接受事件或中断的能力是由保存在线 程状态寄存器SR中的信息来控制的(参看图4),以及可明确地用 TSE和TSD指令控制。该信息包凌舌事件启用标记(EE)和中断启 用标记(IE)。
TSE s SR <~ SR v s 线禾呈一犬态启用
TSD s SR — SR a , s 线禾呈习犬态禁止
这些指令的操作数应是以下之一
EE 启用或禁止事4牛
IE 启用或禁止中断
事件是在其一皮建立的同一范围内^皮处理。因此,对于所有线程 的状态都有效的事件,允许线程对事件快速反应。线程可以使用引 起事件同时留下某些或所有事件信息不变的端口扭^亍输入和ilr出 操作。这允许线程完成处理事件并立即等待另一个类似事件。
事件控制器的程序位置必须在用SETV指令启用事件前设定。 端口具有确定何时发生事件的条件,这些是用SETC和SETD指令
设定的。通道只要含足够的数据或具有接受要输出数据的空间就被 一见为就绪。
可以用事件启用无条件(EEU)指令来启用特定端口或通道的 事件生成,以及使用事件禁止无条件(EDU)指令将其禁止。如果 事件条件操作数为真,则事件启用真(EET)指令启用事件,否则 禁止事件;相反如果事件条件操作数为假,则事件启用假(EEF) 指令启用事件,否则禁止事件。这些指令被用来优化受保护输入(guarded i叩uts )的冲丸行。下面是配置端口上事件的某些示例指令 格式,但可以理解同样的指令可针对通道使用。
SETV port,v port[vector]仨v i殳定事件矢量
SETD port, d port[data] <~ d 设定事件数据
SETC port,c port[ctrl] <~ c i殳定事件4空制
EET port, b port[enable]— b; port[ tid] — thread 事4牛启用真
EEF port, b port[enable]<~ ,b; port[tid]仨thread 事4牛启用,支
EDU portport[enable]<~ false; port[ tid] <~ thread 事4牛禁止
EEU portport[enable]<~ true; port[ tid] — thread 事4牛启用
已经启用 一个或多个资源上的事〗牛后,线禾呈可4吏用WAITEU指 令等待至少一个事件。这可导致事件立即发生,且控制被发送到事
件控制器,该事件控制器由相应事件矢量指定,且事件是通过清除 EE(事件启用)标记禁止的。可选地,线程可暂停,直到事件发生_ 一 在该情形中,EE标记将在事件发生时被清除,以及线程继续执行。
WAITET b if b then SR[EE] — true WAITEF b if " b then SR[EE] <~ true WAITEU SR[EE] <~ true CLRE SR[EE] <~ false;
对所有端口
如果真则事件等待 如果^f叚则事件等等
事件等待 禁止所有事件
对线程if port[tid] = thread then port[enable] <~ false
为了优化重复等待一个或多个事件直到条件发生的常见情形, 提供了事件等待指令的条件形式。WAITET指令仅在其条件操作数 为真时等待,且WAITEF仅在其条件操作数为假时等待。
线程启用的所有事件可用单个CLRE指令禁止。这会禁止具有 由线程所启用的事件的所有端口中生成事件。CLRE指令也清除线 程状态寄存器中的事件启用状态。
为了优化线禾呈对高优先级资源的响应性,在随后开始启用端口 和/或通道以及〗吏用 一个事件等待指令前,TSE EE指令可用来首先 启用线-呈上事件。这4羊,处理器可4安照优先级顺序扫描资源。这可 以-使事4牛在一皮启用时立即^皮处理。
与事件相比,中断不是在当前范围内处理的,因此当前PC和 SR (和潜在的某些或所有其他寄存器)必须在中断控制器^l行前被 j呆存。 一旦资源r生成中断,自动发生以下动作
SAVEPC <~ PC;
SAVESR <~ SR;
SR[EE] <~ false;
SR岡<~ false;
PC <~ r[vector]
在控制器完成时,中断的线程的执行可由RFINT指令执行。 RFINT PC <~ SAVEPC; 乂人中断返回SR —SAVESR
当线程被暂停以等待事件时, 一个中断可中断线程。
下面的例子示出了指令是如何被线程用来执行输入,输出和逻 辑才乘作的。在例子中,^使用下面的指令
LDFI:加载指令地址到寄存器中
LDI:加载常数值到寄存器中
EQI:如果寄存器值等于常数,则产生布尔(Boolean)(真)

OR:产生两个寄存器值的逻辑或(OR) ADD:将两个寄存器值相力口 ADDI:将常数加到寄存器值 SHL:向左移位寄存器内容
BBF:如果布尔值为々i,则跳转到程序中另一个点 OUT:输出数据
下面示出从引脚串行输入8位字节的示例代码。当在第二端口 从外部时钟接收的信号从O变为1 (表示应提取数据)时,数据的 每个位从第一端口输入。在高级语言中,该才喿作看起来l象这样
PROC inbyte(clock, data)
39VAR byte;
{ FOR n = 0 FOR 8
WHEN clock TO 1 DO { data bit ; byte = (byte《1) +
RETURN byte
下面示出该过程的指令级程序。
SETCclock, 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
ADDIcount, count, 1
EQI go, count, 8BBF go, Loop
通过将每个代码序列分配给其自身线程,可以同时执行两个或 多个这类^(戈码序列。
下面示出示例代码,使用部分上述指令才丸行NAND类型的进 禾呈,该类型的进禾呈每当两个l叙入x和y中的一个改变习犬态时醒来 (wake up )。高级代码是
PROC醒d(x, y, z) IS
WHILE TRUE
{ WHEN x TO notx DO { notx := NOT notx; z ! (notx OR noty) }
I WHEN y TO noty DO { noty := NOT noty; z ! (notx OR noty) }
在低级代码中,该进程包括分别用矢量"xv"和"yv"初始化 两个端口 x和y的单个线禾呈,并启用这些端口以生成事件。相应指 令纟及禾呈序4口下
nand:
LDI notx, 1
EDI noty, 1
SETC x, TRANSITIONSETD 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
SETDx, notx
OR temp, notx, noty OUT z, temp
WAITyv:
EQI noty, noty, 0
SETDy, noty OR temp, notx, noty OUT z, temp
WAIT
才喿作中,x l叙入改变或y输入改变,以及控制发送到xv或yv。 在4壬一'清形中,响应fC石马(response code)寺丸4亍5个指令,然后等 待下一个输入状态变化。从输入变化到输出变化的等待时间可小于 约10个周期。1 GHz处理器可才莫拟100 MHz逻辑。
作为另一个例子,下面示出4丸4亍D型触发器逻辑的进程,该进 程每当输入改变状态(但仅在由外部时钟计时时改变输出)时醒来。 高级程序是
PROC dtype(d, ck, q) IS WHILE TRUE
{ WHEN d TO notd DO notd := NOT notd I 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, tempWAIT
ckv:
EQI temp, notd, 0 OUT q, temp
WAIT
操作中,要么d-i叩ut改变,要么ck-i叩ut改变。在任一情形中, 响应代码执行3条指令,然后等待下一输入状态变化。从输入变化 到输出变化的等待时间可小于约IO个周期。此外,lGHz处理器可 才莫拟100 MHz逻辑。
下面给出一些更复杂逻辑的例子。类似于D型,其跟踪输入数 据(可以是几个位宽),以便在外部时钟到达时建立该逻辑(另一 种方式仅读取时钟数据,该情形中数据可有非零保存时间)。下面 的例子中通过查询表以及时钟输出计算了输出。可计算输入的更复 杂函数,以及这会在下面指示的点潜在地增加更多指令。然而,注 意到处理器可以只用几条指令来计算某些非常复杂的函数(相对小 LUT)。高级代码是
PROC lookup(d, ck, q) IS WHILE TRUE
{ WHEN d x : x != lastx DO lastx := x
I WHEN ck TO TRUE DO q ! lookup[lastx]
45相应指令级程序是 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:INd, dataSETDd, dataWAIT
ckv:
LDWtemp, lookup, data 〃将其耳又^/人而改变函凄t
OUT temp, q
WAIT
在才喿作中,要么d-input改变,要么ck-input改变。在任一'清形中,响应代码执行3条指令,然后等待下一输入状态变化。从输入变化到输出变化的等待时间可小于约IO周期。此外,lGHz处理器可才莫拟100 MHz逻辑。
还需注意的是,上面的例子展示了给定线程如何处理多个活动,诸如多个事件。
与事件相比,中断要求状态保存在中断控制器的入口以及在出口恢复,为了使寄存器在控制器内可用。此外,控制器通常需要从其最后一次进入处开始4企索状态以及将其保存以便下一次进入。中断控制器的简单例子在下面示出。其4吏用某些额外指令
LDWSP 用栈指针乂人存4诸器加载值
STWSP 用栈指针将值存储在存储器中LDWDP用^t据指针从存储器加载值STWDP 用数据指针将值存储在存储器中EXTSP用来扩展堆栈/人而为新值留出空间LDAWSP用来>^人堆栈中丢弃值
该例子输入凄t据字节, 一次一位;与上面4吏用事件的例子相比,该例子使用中断控制器。高级程序是
PORT clock: INT, TRANSITION, 1;
VAR byte;
VAR count;
byte := 0;
count := 0;
ENABLE clock;
〃要中断的程序跟在此处之后
HANDLER i勿te()
{ data bit ; byte := (byte《1) + bit;
count := count + 1;
IF count = 8 THEN DISABLE clock当端口被启用以生成中断时,每次外部时钟过渡到逻辑l时都进入中断控制器。控制器提取数据位并且形成字节。该字节与几个位输入一起存4诸在存储器中的位置上以及经数据指针进行存取。当8位已经输入时,控制器禁止另外的中断,以便字节准备好供程序
使用。相应指令级程序为SETDclock, 1SETCclock, TRANSITIONSETCclock, INTLDI r0, 0
STWDP r0, byteSTWDP rO, nEEU clock... 〃将被中断的程序
int: 〃中断控制器EXTSP 2STWSP RO, 0STWSP Rl, 1INclock, rOINdata, rO LDWDPrl, byte SHL byte, byte, 1
ADD byte, byte, rO
STWDP rl, byte LDWDPr0, n ADDI rO, r0, 1 STWDP r0, n EQI rO, rO, 8
EEF clock, rO
LDWSP Rl, 1 LDWSP RO, 0 LDAWSP 2 RFINT
/人上面的"i兌明和例子可以看出各端口的活动如4可与各线禾呈相 关联,以及如何基于该活动引起的事件调度这些线程,有利地提供 了可对外部激励快速响应的处理器。
可以理解上面的实施例〗又以例子"i兌明的。在其他实施例中,可 根据所需芯片规范提供不同寄存器组和指令。在某些实施例中,线程标识符不必发送到端口 ,而是可保留线程调度器的责任或存储在 其他地方。可选地,可以在端口为每个线禾呈^是供个别的就绪标记, 以便线程标识符被发送到端口从而选择正确的就绪信号,但线程标 识符不必在一企测到活动后返回线程调度器。另外,条件和/或条件凄t 据不必发送到端口 。而是条件可在端口预配置以及/或者条件可在线 程调度器或其他地方一皮评估。可以基于来自除了端口和通道的其他 源的活动来调度线程。不同互连可才是供在处理器不同组件之间。而 且本发明不专用于具有移动应用处理器的移动纟冬端。其4也应用和配 置对本领域技术人员是显然的。本发明的范围不是由所述实施例,
而是由权利要求限定的。
权利要求
1.一种处理器,包括第一端口,可操作以基于所述第一端口处的第一活动生成第一指示;第二端口,可操作以基于所述第二端口处的第二活动生成第二指示;执行单元,被设置为执行多个线程;以及线程调度器,被连接以接收所述指示,以及被设置为基于所述指示来调度所述多个线程用于由所述执行单元执行,所述调度包括暂停所述线程的执行直到收到相应指示;其中,所述第一活动和所述第二活动中的每一个都与各个相应的线程相关联。
2. 根据权利要求1所述的处理器,其中,所述线程调度器被设置 为将第 一线程标识符发送到与所述第 一端口相关联的标识符 寄存器,其中,所述第一线程标识符涉及暂停等待所述第一活 动的第一线程。
3. 根据权利要求2所述的处理器,其中,所述线程调度器被设置 为将第二线禾呈标识符发送到与所述第二端口相关联的标识符 寄存器,其中,所述第二线程标识符涉及等待所述第二活动的 第二线程。
4. 根据权利要求1所述的处理器,其中, 一旦暂停的线程的所有 线程标识符都已经一皮发送到端口 ,则所述处理器适于关闭所述 执行单元、所述线程调度器以及时钟中的至少一个。
5. 才艮据^又利要求4所述的处理器,其中, 一旦所述线程标识符中的至少一个乂人其相应端口返回,则所述处理器适于对所述4丸行 单元、线程调度器和时钟中的至少一个上电。
6. 4艮据权利要求1所述的处理器,其中,所述第一和第二端口中 至少一个包括活动处理逻辑电3各并且与至少一个用于存4诸条 件的条件寄存器相关联,所述活动处理逻辑电路被设置为监视 所述端口处的活动以及根据满足所述条件的所迷活动来生成 所述指示。
7. 根据权利要求6所述的处理器,其中,所述才丸行单元一皮设置为 将相应条件发送到每个条件寄存器。
8. 根据权利要求1所述的处理器,还包括程序存储器,通过总 线连接到所述执行单元的,其中,所述线程调度器通过至少一 个与所述总线分离的连接,从所述第一和第二端口中的每个接 收所述指示。
9. 根据权利要求2所述的处理器,其中,所述线程调度器被设置 为 一旦暂停所述第 一线程就将连续点矢量发送至与所述第一 端口相关联的矢量寄存器;以及基于所述第一活动,所述连续 点矢量^皮返回到所述4丸4亍单元。
10. 根据权利要求9所述的处理器,其中,所述第一线程与来自多 个端口的活动相关联,每个所述端口可操作以根据该活动生成 相应指示,执行单元适于将多个连续点矢量中的每个发送到所 述多个端口中的相应端口 , #^居相应活动返回相应连续点矢 量;并且所述线程调度器适于暂停所述第一线程的执行,直到 才妄收到所述相应指示中的至少 一个。
11. 根据权利要求10所述的处理器,其中,端口事件启用标记与 所述第 一端口相关耳关,并且所述线程调度器适于通过^f吏所述端 口事件启用标记有效来启用所述第一活动,从而触发所述调 度,以及通过4吏所述端口事件启用标记无效来禁止所述第一活 动触发所述调度。
12. 4艮据—又利要求11所述的处理器,其中,线程事件启用标记与 所述第 一线程相关联;所述线程调度器适于通过使所述线程事 件启用标记有效来^^艮据所述第一活动^f吏所述第一线程能够,皮 调度,以及通过使所述线程事件启用标记无效来^4居所述第一 活动禁止所述第一线程#1调度。
13. 才艮据—又利要求11所述的处理器,其中,所述端口事件启用标 记和所述线程事件启用标记中的至少一个通过所述第一活动 的发生而^皮自动无岁文。
14. 根据权利要求11所述的处理器,其中,所述线程调度器适于 暂停第 一线程的执行,其中所述第 一线程等待来自端口的第三 活动的第三指示,同时所述端口事件启用标记和所述线程事件 启用才示i己中的至少 一个净皮无步文。
15. 根据权利要求12或其从属权利要求中的任一权利要求所述的 处理器,其中,多个相应端口事件启用标记与关耳关于所述第一 线程的所述多个端口中的每个相关联;且所述线程调度器被设 置为<吏所述线程事件启用标记有效以及随后4吏所述多个端口 事件启用标i己有效。
16. 根据权利要求1所述的处理器,还包括多个线程寄存器组,每 个寄存器组都4皮分配用于存储涉及所述多个线程中相应一个 线程的信息。
17. 才艮据4又利要求1所述的处理器,其中,所述处理器在芯片上实 现,并且所述第一和第二端口中的至少一个是用于与所述芯片 上的另 一个处理器通信的内部端口 。
18. 根据权利要求1所述的处理器,其中,所述处理器在芯片上实 现,并且所述第 一和第二端口中至少一个是用于与所述芯片外 部的设备通信的外部端口 。
19. 才艮据片又利要求18所述的处理器,其中至少一个外部端口是引上升沿或下降沿。
20. 才艮据斥又利要求18或19所述的处理器,其中,至少一个外部端 口是^t据端口 ,所述^fet据端口用于处理所述端口处的一个或多 个^立的瞬时逻辑电平。
21. 根据权利要求1所述的处理器,其中,所述执行单元适于识别 并执行用于暂停和运行线程的专用指令。
22. 根据权利要求16所述的处理器,还包括在至少两个所述组之 间的至少一个通道,其中,所述线程调度器适于基于所述通道 上出现的活动来调度线程。
23. 才艮据权利要求1所述的处理器,其中,所述线程调度器额外地 适于基于中断来调度线程。
24. 根据权利要求23所述的处理器,其中,基于所述中断而调度 的所述线程是所述第一线程,所述中断将暂停的所述第一线程 中断。
25. 根据权利要求1所述的处理器,其中,如果相关联的活动出现 在取决于该活动的线程内的指令的执行时或执行之前,则所述 线程调度器适于调度线程而无需暂停。
26. —种在具有第一端口和第二端口的处理器内调度多个线程用 于^U于的方法,所述方法包4舌将各相应线程与所述第一端口处的第一活动和所述第二 端口处的第二活动相关联;根据所述第一活动在所述第一端口处生成第一指示;才艮据所述第二活动在所述第二端口处生成第二指示;以及基于所述指示调度所述线程用于执行,所述调度包括暂 停线程的#^于直到接收到相应指示;以及通过根据所述调度执行所述线程而运行所述线程。
27. 根据权利要求26所述的方法,还包括将与暂停等待所述第一 活动的第 一线程相关的第 一线程标识符发送至与所述第 一端 口相关联的标识符寄存器。
28. 根据权利要求27所述的方法,还包括将与暂停等待所述第二 活动的第二线程相关的第二线程标识符发送至与所述第二端 口相关联的标识符寄存器。
29. 根据权利要求28所述的方法,还包括一旦被中止的线程的所有线程标识符都已经发送到端 口,则对以下中的至少一个断电用于执行所述线程的执行单 元,用于调度所述线程的线程调度器,以及时钟。
30. 根据权利要求29所述的方法,还包括一旦/人相应端口返回至少 一个所述线程标识符,则对所 述才丸行单元、线程调度器以及时钟中的至少一个上电。
31. 根据权利要求26所述的方法,其中,所述第一和第二端口中 的至少一个包括活动处理逻辑电i 各,并且与至少一个用于存储 条件的条件寄存器相关联,所述方法还包括使用所述活动处理 逻辑电路来监视所述端口处的活动以及根据满足所述条件的 所述活动生成所述指示。
32. 4艮据权利要求31所述的方法,还包括将相应条件发送至每个 条件寄存器。
33. 根据权利要求26的方法,其中,所述处理器包括通过总线连 接到所述执行单元的存储器,以及所述方法还包括通过至少一 条与所述总线分离的连接从所述第一和第二端口中的每一个 发送所述指示。
34. 4艮据权利要求26所述的方法,还包括一旦暂停所述第一线程, 则将连续点矢量发送到与所述第 一端口相关联的矢量寄存器; 以及4艮据所述第 一活动返回所述连续点矢量。
35. 根据权利要求34所述的方法,包括将所述第一线程与来自多 个端口的活动相关联,以及将多个连续点矢量中的每个发送到所述多个端口中的相应一个,其中,所述调度包括暂停所述第 一线程的执行直到返回所述连续点矢量中的至少 一 个。
36. 根据权利要求34所述的方法,包括通过使端口事件启用标记 有效来启用所述第一活动以触发所述调度,以及通过4吏所述端 口事件启用标记无效来禁止所述第一活动触发所述调度。
37. 根据权利要求34所述的方法,包括通过使所述线程事件启用标记有效来才艮据所述第一活动4吏所述第一线禾呈能够#:调度,以及通过4吏所述线程事件启用标记无效来才艮据所述第一活动禁 止所述第 一线程被调度。
38. 才艮据权利要求36或37所述的方法,包括通过所述第一活动的 发生自动使所述端口事件启用标记和所述线程事件启用标记 中的至少一个无步丈。
39. 根据权利要求36所述的方法,还包括在使所述端口事件启用标记和所述线程事件启用标记中 至少一个无效后,恢复所述第一线程的执行以及随后暂停所述 第一线程的执行,该第 一线程等待来自端口的第三活动的第三 指示,同时4吏所述端口事件启用标记和所述线程事件启用标记 中至少 一 个^皮无岁文;使所述端口事件启用标记和所述线程事件启用标记中的 至少一个再次有效;以及在4吏所述端口事件启用标记和所述线程事件启用标记中 至少一个再次有效之后,暂停正在等待所述第一活动再次发生 的所述线程的执行。
40. 根据权利要求34所述的方法,其中,多个相应端口事件启用 标记与关耳关于所述第一线程的所述多个端口中的每一个相关 联;以及所述方法包括使所述线程启用标记有效以及随后使所 述多个端口事件启用标记有效。
41. 根据权利要求26所述的方法,还包括将表示每个所述线程的 信息存储在相应线程寄存器组中。
42. 根据权利要求26所述的方法,其中,所述处理器在芯片上实 现,以及所述第一和第二端口中的至少一个是用于与所述芯片 上另 一个处理器进4亍通信的内部端口 。
43. 才艮据4又利要求26所述的方法,其中,所述处理器在芯片上实 5见,以及所述第一和第二端口中的至少一个是用于与所述芯片 外的i殳备进行通信的外部端口 。
44. 根据权利要求43所述的方法,其中,至少一个外部端口是用号下降沿的引脚端口 。
45. 根据权利要求43或44所述的方法,其中,至少一个外部端口 是数据端口 ,用于处理在所述端口处的一个或多个位的瞬时逻 寿專电平。
46. 根据权利要求26所述的方法,还包括执行用于暂停和运行线 程的专用指令。
47. 根据权利要求41所述的方法,其中,所述处理器还包括在至 少两个所述寄存器组之间的至少 一个通道,以及所述方法包括 基于所述通道上发生的活动来调度线程。
48. 根据权利要求26所述的方法,还包括基于中断来调度线程。
49. 根据权利要求48所述的方法,其中,基于所述中断而调度的 所述线程是所述第 一线程,以及所述中断将净皮暂停的所述第一 线程中断。
50. 根据权利要求26所述的方法,如果相关联的活动发生在取决 于该活动的线禾呈内的指令冲丸行时或4丸4亍之前,则调度线程而无需暂停。
51. —种线程调度器,用于在具有第一和第二端口的处理器内调度 多个线程用于^l行,其中所述线程调度器适于接收所述第 一端口根据所述第 一端 口处的第一活动生成的第一指示;所述线程调度器适于接收所述第二端口才艮据所述第二端 口处的第二活动生成的第二指示;以及所述线程调度器适于基于所述指示来调度所述多个线程 用于由执行单元执行,所述调度包括暂停线程的执行直到接收 到相应指示;其中,所述第一活动和第二活动中每个都与各相应线程 相关耳关。
52. —种端口,用于调度多个线程用于才丸4亍,所述端口包括活动 处理逻辑电^各,^皮i殳置为4艮据所述端口处的活动生成指示;寄 存器,用于存储标识与所述活动相关联的线程的信息;以及寄 存器,用于存储条件;其中,所述活动处理逻辑电路适于在所 述活动满足所述条件时在芯片上发送所述第一指示。
53. —种移动终端,具有移动应用处理器,至少一个外围i殳备,以 及连4妾在所述移动应用处理器与所述外围"i殳备之间的4妄口处 理器,所述^l妄口处理器包^^舌第一端口,可才喿作以才艮据所述第一端口处的第一活动生 成第一指示;第二端口,可纟喿作以才艮据所述第二端口处的第二活动生 成第二指示;执行单元,被设置为执行多个线程;以及线程调度器,被连接以接收所述指示以及被设置为基于 所述指示来调度所述多个线程用于由所述寺丸^f亍单元才丸行,所述调度包括暂停线程的执行直到接收到相应就绪信号;其中,所述第一活动和所述第二活动中的每个都与各相 应线一呈相关耳关。
54. —种互连的处理器阵列,至少一个所述处理器包才舌第一端口,可^乘作以才艮据所述第一端口处的第一活动生 成第一指示;第二端口,可纟喿作以4艮据所述第二端口处的第二活动生 成第二指示;执行单元,被设置为执行多个线程;以及线程调度器,^皮连4妄以4妄收所述指示,以及^Mc没置为基 于所述指示调度所述多个线程用于由所述才丸行单元才丸行,所述 调度包括暂停线程的执行直到接收到相应就绪信号;其中,所述第一活动和所述第二活动中的每个都与各相 应线禾呈相关耳关;以及所述第 一和第二端口中的至少 一个将所述至少一个处理 器与阵列中另 一个处理器相连接。
55. —种处理器,其包括第一端口装置,用于4艮据所述第一端口处的第一活动生 成第一指示;第二端口装置,用于才艮据所述第二端口处的第二活动生 成第二指示;4丸^f亍装置,用于执行多个线程;以及线程调度装置,用于接收所述指示,以及被设置为基于 所述指示来调度所述多个线程用于由所述执行单元来执行,所述调度包括暂停线程的4丸行直到4妄收到相应指示;其中,所述第一活动和所述第二活动中的每个都与各相 应线程相关耳关。
56. —种线程调度器,用于在具有第一端口和第二端口的处理器内 调度多个线程用于执行,包括用于4妄收由所述第一端口才艮据所述第一端口处的第一活 动生成的第一指示的装置;用于4妄收由所述第二端口才艮据所述第二端口处的第二活 动生成的第二指示的装置;以及用于基于所述指示来调度所述多个线程用于由所述执行 单元来执行的装置,所述调度包括暂停线程的执行直到接收到 相应才旨示;其中,所述第一活动和所述第二活动中的每个都与各相 应线^呈坤目关联。
全文摘要
本发明提供了一种处理器,其包括第一端口,用于根据第一端口处的第一活动生成第一指示;第二端口,用于根据第二端口处的第二活动生成第二指示。该处理器还包括执行单元,被设置为执行多个线程;以及线程调度器,被连接以接收指示并被设置为根据这些指示调度多个线程用于由执行单元执行。调度包括暂停线程的执行直到收到各指示。第一活动和第二活动中的每个都与各相应线程相关联。
文档编号G06F9/48GK101681274SQ200880015942
公开日2010年3月24日 申请日期2008年3月13日 优先权日2007年3月14日
发明者戴维·梅 申请人:Xmos有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1