具有多线程处理器的实时控制装置的制作方法

文档序号:6557574阅读:195来源:国知局
专利名称:具有多线程处理器的实时控制装置的制作方法
技术领域
0002下面公开的内容涉及处理电路和系统。
背景技术
0003传统操作系统一般支持多任务,多任务是允许超过一个的处理器线程共享共同的处理资源的调度方案。处理器线程表示处理器内的体系结构状态,其跟踪软件程序的执行。在计算机具有单个处理器的情况下,在任何给定的时间点上仅有一个处理器线程被处理,这就意味着处理器仅能主动地执行与单个处理器线程相关的指令。从一个处理器线程到另一处理器线程重新分配处理器的动作称为上下文切换(context switch)。
0004在传统的流水线处理器中,上下文切换一般通过硬件中断和中断服务例程发生。中断服务流程通常具有相关的执行时间或者中断开销,这会耗费宝贵的处理器时间。此外,在传统的流水线处理器中,上下文切换一般仅以固定间隔(例如每100μs)发生,该固定间隔是由例如操作系统供应商来确定的。

发明内容
0005一般来说,在一个方面中,这个说明书描述了一种硬盘控制器,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括一个执行流水线,和线程控制单元,该线程控制单元控制所述执行流水线,以将伺服相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
0006具体实施方式
可包括以下的一种或多种。所述硬盘控制器可进一步包括一个存储伺服相关的程序代码和系统级程序代码的存储器。所述存储器能够存储用户提供的程序代码。线程控制单元能够控制执行流水线,以将用户提供的程序代码作为第三线程执行。执行流水线能够包括一个指令取出单元、一个响应该指令取出单元的译码器(decoder)、响应该译码器的发布单元(issue unit)以及一个响应该发布单元的执行单元。系统级程序代码可包括以下代码中的至少一种磁盘驱动器数据捕获程序代码、错误改正程序代码、主机协议管理程序代码、高速缓存管理程序代码或缺陷管理器程序代码。主机协议管理程序代码可管理以下协议中的至少一种ATA、USB、SATA、SAS、FC、CE-ATA、SDIO。硬盘控制器可进一步包括一个适合执行程序代码的至少两个线程的第二多线程处理器。所述第二多线程处理器可包括第二执行流水线、和第二线程控制单元,该第二线程控制单元控制第二执行流水线,以将第一实时程序代码作为第三线程执行,以及将第二实时程序代码作为第四线程执行。所述第二多线程处理器能够执行第一多线程处理器不执行的程序代码的给定线程。所述硬盘控制器可进一步包括读通道。
0007一般来说,在另一方面,这个说明书描述了一种DVD控制器,其包括适合执行至少两个线程的程序代码的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将伺服相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
0008一般来说,在另一方面,这个说明书描述了一种媒体播放器装置,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将媒体处理相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0009一般来说,在另一方面,这个说明书描述了一种蜂窝WLAN(无线局域网)系统,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将蜂窝通信相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0010特定的实施方式可包括以下特征中的一个或多个。蜂窝通信相关的程序代码可涉及以下协议中的一种或多种CDMA、G3、GSM等等。系统级程序代码可包括以下代码中的至少一种菜单程序代码、显示程序代码、MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线/有线通信程序代码或安全管理程序代码。
0011一般来说,在另一方面,这个说明书描述了一种VoIP系统,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将语音处理相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0012特定的实施方式可包括以下特征中的一个或多个。所述线程控制单元可进一步控制执行流水线,以将编解码器相关的程序代码作为第三线程执行。语音处理相关的程序代码可以是与处理语音信号、将其转换为用于在网络上传输的合适形式相关联的程序代码。系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线/有线通信程序代码或安全管理程序代码。
0013一般来说,在另一方面,这个说明书描述了一种无线网络设备系统,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将无线网络相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0014特定的实施方式可包括以下特征中的一个或多个。无线网络相关的程序代码可包括以下代码中的至少一种路由程序代码、网络程序代码、接入点程序代码、中继器程序代码、安全程序代码、虚拟专用网络程序代码或实现无线通信协议的程序代码。系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线通信程序代码或安全管理程序代码。
0015一般来说,在另一方面,这个说明书描述了一种无线电视设备系统,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将媒体相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0016特定的实施方式可包括以下特征中的一个或多个。媒体相关的程序代码可包括视频处理程序代码或音频处理程序代码中的至少一种代码。系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。
0017一般来说,在另一方面,这个说明书描述了一种宽带调制解调器,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将宽带通信相关的程序代码作为第一线程执行,而将系统级代码作为第二线程执行。
0018特定的实施方式可包括以下特征中的一个或多个。宽带通信相关的程序代码可包括电缆通信程序代码、DSL通信程序代码或卫星通信程序代码。系统相关的代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。
0019一般来说,在另一方面,这个说明书描述了一种有线路由器,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,该线程控制单元控制执行流水线,以将联网相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
0020特定的实施方式可包括以下特征中的一个或多个。联网相关的程序代码可包括以下代码中的至少一种路由程序代码、接入点程序代码、安全程序代码、中继器程序代码、虚拟专用网络程序代码或实现通信协议的程序代码。系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线通信程序代码或安全管理程序代码。
0021一般来说,在另一方面,这个说明书描述了一种实时控制器,其包括适合执行程序代码的至少两个线程的多线程处理器。所述多线程处理器包括执行流水线和线程控制单元,线程控制单元控制该执行流水线,以将媒体相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
0022一般来说,在另一方面,这个说明书描述了一种方法,其包括提供第一实时程序代码;提供第二实时程序代码;通过多线程处理器的执行流水线用第一处理器线程执行第一实时程序代码;通过多线程处理器的执行流水线用第二处理器线程执行第二实时程序代码。
0023一般来说,在另一方面,这个说明书描述了一种实时控制器。所述实时控制器包括用于执行程序代码的至少两个线程的装置。所述执行装置包括执行流水线装置和控制该执行流水线装置的装置,以将第一实时程序代码作为第一线程执行,而将第二实时程序代码作为第二线程执行。
0024特定的实施方式可包括以下特征中的一个或多个。所述实时控制器可包括存储所述第一实时程序代码和第二实时程序代码的装置。所述存储装置可进一步存储用户提供的程序代码。所述控制装置可控制执行流水线装置,以将用户提供的程序代码作为第三线程执行。执行流水线装置能够包括一个取出指令的装置、一个将取出指令译码的装置、一个发布译码的指令的装置以及执行发布的指令的装置。所述实时控制器还包括一个执行程序代码的至少两个线程的第二装置。所述第二执行装置包括第二执行流水线装置,和控制该第二执行流水线装置,以将第三实时程序代码作为第三线程执行和将第四实时程序代码作为第四线程执行的装置0025一般来说,在另一方面,这个说明书描述了一种实时控制器,其包括提供第一实时程序代码的装置;提供第二实时程序代码的装置;通过多线程处理器的执行流水线用第一处理器线程执行第一实时程序代码的装置;以及通过多线程处理器的执行流水线用第二处理器线程执行第二实时程序代码的装置。
0026特定的实施方式可包括以下中的一个或多个。第一实时代码可以是视频处理程序代码,而第二实时代码可以是音频程序代码0027实施方式可包括以下优点中的一个或多个。包括单个多线程处理器的应用被包括,其不需要多处理器(例如CPU到CPU)管理。因此,不需要和多处理器管理管理的处理器时间。减少了应用中的CPU数量进一步减少了和给定应用关联的制造成本。此外,多线程处理器保证通过可专门用于给定的程序代码的可用处理器线程,计算资源对于该给定的程序代码是可用的。多线程处理器也允许独立开发由多线程处理器执行的软件代码。
0028在附图和以下的描述中阐述了一个或多个实施方式的细节。从说明书、附图和权利要求书,其他特征和优点将是明显的。


0029图1是多线程流水线处理器体系结构的框图。
0030图2是多线程处理器的操作方法,该多线程处理器是根据图1的多线程流水线处理器体系结构配置的。
0031图3是根据图1的多线程流水线处理器体系结构的多线程流水线处理器的框图。
0032图4是多线程流水线处理器体系结构的框图。
0033图5是根据图4的多线程流水线处理器体系结构的多线程流水线处理器框图。
0034图6是在图1和图4的多线程流水线处理器体系结构中执行异常处理的方法。
0035图7是在图1和图4的多线程流水线处理器体系结构中执行中断处理的方法。
0036图8是包括多线程处理器的硬盘驱动器系统的功能框图。
0037图9是包括多线程处理器的数字通用光盘(DVD)系统的功能框图。
0038图10是包括多线程处理器的蜂窝WLAN(无线局域网)系统的功能框图。
0039图11是包括多线程处理器的VoIP系统的功能框图。
0040图12是包括多线程处理器的无线网络设备的功能框图。
0041图13是包括多线程处理器的无线电视系统的功能框图。
0042图14是包括多线程处理器的宽带调制解调器的功能框图。
0043图15是包括多线程处理器的有线路由器的功能框图。
0044图16是包括多线程处理器的无线媒体播放器的功能框图。
0045图17是包括多线程处理器的实时控制器的功能框图。
0046在各个图中,相同的附图标记表示相同元件。
具体实施例方式
0047图1是多线程流水线处理器体系结构100的框图,该体系结构可操作处理两个或更多的处理器线程T1、T2…Tn。处理器线程T1、T2…Tn每个都表示多线程流水线处理器体系结构100内的体系状态,其跟踪相应的软件程序的执行。软件程序的指令可从,例如指令高速缓存(例如指令高速缓存102)获取。在一个实施方式中,多线程流水线处理器体系结构100包括两个或更多的程序计数器(未示出),每个计数器对应于处理器线程T1、T2…Tn。每个程序计数器表示(对一个相应的处理器线程T1、T2…Tn)相对于一个指令序列,多线程流水线处理器体系结构100的位置。下面结合图3和5更详细地讨论程序计数器。
0048在一个实施方式中,多线程流水线处理器体系结构100包括6个流水线阶段。这6个流水线阶段包括指令取出阶段(IF)、指令译码阶段(ID)、指令发布阶段(IS)、指令执行阶段(EX)、数据存储器读阶段(MEM)、以及写回阶段(WB)。但是多线程流水线处理器体系结构100可包括不同数目的流水线阶段。多线程流水线处理器体系结构100还包括指令取出单元(IFU)104、译码器106、发布单元108、寄存器文件110、执行单元112、读逻辑114、写逻辑116、和可编程的线程分配控制器(或者线程控制单元)118。
0049指令取出单元104从例如指令高速缓存102中取得程序指令。译码器106译码程序指令并且产生由执行单元112执行的译码后的指令。在一个实施方式中,译码后的指令是固定长度的微操作指令。发布单元108发布译码后的指令给执行单元112,用于执行。执行单元112可以是载入执行单元、存储执行单元、算术逻辑单元(ALU)、乘法并累加(MAC)单元或组合的载入/存储执行单元,如在Hong-Yi Chen和Jensen Tjeng的题为“Variable Length Pipeline Processor Architecture”的美国专利申请中描述的,该申请的代理人记录号为MP0634/13361-140001,其全部内容通过引用并入。读逻辑114从例如数据高速缓存(未示出)读取数据。写逻辑116将被执行指令的结果写回到例如数据高速缓存、寄存器文件110或重排序缓冲器(未示出)。
0050寄存器文件110存储和每个处理器线程T1、T2…Tn关联的数据。在一个实施方式中,寄存器文件110包括分开的存储体(bank)(例如存储体T1、T2…Tn),它们存储与对应的处理器线程T1、T2…Tn相关联的数据。例如,如果写逻辑116正在将与处理器线程T2关联的数据写回寄存器文件110,那么写逻辑116就将数据写到寄存器文件110的存储体T2。替代地,可在多线程流水线处理器体系结构100内实现用于存储对应于每个处理器线程T1、T2…Tn的数据的单独的寄存器文件(未示出)。
0051可编程的线程分配控制器118可被编程,以存储处理器时间分配,其已经被限定用于每个处理器线程T1、T2…Tn,也就是处理器时间的哪个部分将专用于每个处理器线程T1、T2…Tn。在一个实施方式中,通过图形用户界面(未示出)来接收限定待分配给多个处理器线程(例如处理器线程T1、T2…Tn)中每个处理器线程的处理器时间部分的输入(例如来自用户)。例如对于双线程流水线处理器,用户能够分配95%的处理器时间给第一处理器线程,分配5%处理器时间给第二处理器线程。在一个实施方式中,为每个处理器线程(例如处理器线程T1、T2…Tn)限定的处理器时间分配能够被动态改变——也就是在程序执行过程中改变——通过用户或者优选地通过软件程序(例如待执行的软件程序)。替代地,每个处理器线程的处理器时间分配能够被静态地设定——也就是在程序执行过程中是不可变化的。
0052在一个实施方式中,可编程的线程分配控制器118通过确定将从中取出(例如通过指令取出单元104)下一指令的处理器线程来自动执行上下文切换。在一个实施方式中,可编程的线程分配控制器118通过切换与指令取出单元104通信的一个或多个选择器,例如多路复用器和/或多路输出选择器(未示出)来执行上下文切换。以下联系图3、4、5讨论包括执行上下文切换的多路复用器和多路输出选择器的处理器的一种实施方式。当发生上下文切换时,和下一处理器线程相关联的指令就被指令取出单元104取出。虽然多线程流水线处理器体系结构100的流水线阶段(例如流水线阶段IF、ID、IS、EX、MEM、WB)可包含与两个或更多处理器线程相关联的指令,但是与每个指定处理器线程相关联的数据通过寄存器文件110被单独保存,因此,保持了与每个处理器线程相关联的数据的完整性。与需要中断服务例程的传统流水线处理器不同,可编程的线程分配控制器118没有任何与执行上下文切换相关联的中断开销。
0053图2显示了方法200,其通过多线程流水线处理器体系结构(例如多线程流水线处理器体系结构100)处理处理器线程。限定分配给多个处理器线程中的每一个的一部分处理器时间的输入被接收(步骤202)。在一个实施方式中,通过图形用户界面从用户接收输入分配。在一个实施方式中,基于执行的软件应用的要求确定输入分配。分配给每个处理器线程的处理器时间可被存储在可编程的线程分配控制器中(例如可编程的线程分配控制器118)。在一个实施方式中,基于CPU(中央处理单元)周期、时钟周期和/或指令周期分配处理器时间。
0054根据分配给每个线程的处理器时间,每个线程被多线程流水线处理器处理(步骤204)。在一个实施方式中,根据分配给每个线程的处理器时间,如可编程的线程分配控制器中存储的,上下文切换自动发生。在一个实施方式中,可编程的线程分配控制器控制与指令取出单元(例如指令取出单元104)通信的一个或多个多路复用器和/或多路输出选择器的切换。在一个实施方式中,可编程的线程分配控制器控制位于多线程流水线处理器的每个流水线阶段之前或之后的一个或多个多路复用器和/或多路输出选择器的切换,以执行上下文切换,如下面更详细讨论的。在这个实施方式中,处理器线程的状态被存储在,并且从位于流水线处理器中的每个流水线阶段之前或之后的寄存器载入。在一个实施方式中,上下文切换发生在给定的指令周期的结尾。
0055(例如通过可编程的线程分配控制器118)确定动态改变处理器时间分配的输入是否被接收(步骤206)。如果分配给每个处理器线程的处理器时间还没有被动态改变,那么每个处理器线程就根据处理器时间分配被处理,如前面确定的,并且方法200返回步骤204。如果处理器时间已经被动态改变,那么就根据改变的处理器时间分配处理每个处理器线程(步骤208)。在步骤208之后,方法200返回上面讨论的步骤206。
0056图3说明了多线程流水线处理器300的框图,处理器300是根据处理(n个)处理器线程T1、T2…Tn的多线程流水线处理器体系结构100构造的。在一个实施方式中,多线程流水线处理器300包括指令取出单元304、译码器306、寄存器文件308、发布单元310、两阶段执行单元312、重排序缓冲器314和可编程的线程分配控制器316。多线程流水线处理器300还包括寄存器T1-Tn和程序计数器T1-Tn,其分别对应于处理器线程T1、T2…Tn。多线程流水线处理器300还包括多路复用器350。
0057在一个实施方式中,在指令取出(IF)阶段期间,指令取出单元304从例如指令高速缓存302获取要被执行的指令。指令取出单元304根据程序计数器T1、T2…Tn获取指令。在一个实施方式中,程序计数器T1表示处理器线程T1的执行状态(也就是相对于和处理器线程T1相关联的指令序列,多线程流水线处理器300在的地方),程序计数器T2表示与处理器线程T2关联的执行状态,并且程序计数器Tn表示与处理器线程Tn关联的执行状态。
0058在指令译码阶段(ID)期间,由指令取出单元304获取的指令被译码。
0059在指令发布阶段(IS)期间,在一个实施方式中,译码的指令被发送给重排序缓冲器314(通过发布单元310)。重排序缓冲器314存储译码的指令直到译码的指令被发布用于执行。在一个实施方式中,重排序缓冲器314是循环缓冲器。
0060重排序缓冲器314也存储执行的指令的结果,直到执行的指令准备好退出,例如,进入寄存器文件308。在一个实施方式中,寄存器文件308包括对应于由多线程流水线处理器300处理的每个处理器线程(例如处理器线程T1、T2…Tn)的存储体(例如存储体T1、T2…Tn)。存储体T1存储和处理器线程T1关联的数据,存储体T2存储和处理器线程T2关联的数据,并且存储体Tn存储和处理器线程Tn关联的数据。数据可包括操作数和/或与指定的处理器线程关联的执行指令的结果。在一个实施方式中,多线程流水线处理器300不包括重排序缓冲器。
0061在执行阶段EX1、EX2期间,执行单元312执行从发布单元310发布的译码指令。执行单元312可以是任何类型的执行单元,如上面讨论的。虽然显示的执行单元312具有两个流水线阶段,但是执行单元312可以具有不同数目的流水线阶段。在一个实施方式中,执行指令的结果被写回重排序缓冲器314,然后退回到寄存器文件308。
0062可编程的线程分配控制器316能够被编程,以为每个处理器线程T1、T2…Tn存储处理器时间分配——也就是多少处理器时间将被专用于每个处理器线程T1、T2…Tn。在一个实施方式中,分配处理器时间部分给每个处理器线程T1、T2…Tn的、例如来自用户的输入通过图形用户界面(未示出)被接收。在一个实施方式中,每个处理器线程T1、T2…Tn的处理器时间分配可由用户动态改变。在一个实施方式中,每个处理器线程T1、T2…Tn的处理器时间分配可通过由多线程流水线处理器300处理的软件应用程序来动态改变。
0063在一个实施方式中,通过切换与指令取出单元304通信的多路复用器350,可编程的线程分配控制器316自动执行处理器线程T1、T2…Tn之间的上下文切换。例如在多线程流水线处理器300正在处理处理器线程T1的时间期间,多路复用器350被控制,以使与处理器线程T1关联的指令通过多线程流水线处理器300的流水线阶段。当上下文切换从处理器线程T1发生时,多路复用器350被控制,以通过与另一处理器线程例如处理器线程T2关联的指令。在一个实施方式中,多路复用器是n到1多路复用器。
0064在一个实施方式中,可编程的线程分配控制器316包括多个线程分配计数器(例如线程分配计数器T1-Tn),其确定对应于分配给每个处理器线程的处理器时间的权重。例如,在一个实施方式中,每个线程分配计数器T1-Tn包含一个值,其表示多少CPU周期被分配给每个线程。例如,如果线程分配计数器T1包含值256,线程分配计数器T2包含值16,并且线程分配计数器Tn包含值0,那么指令就会首先从处理器线程T1取出用于256个CPU周期,然后从处理器线程T2取出指令用于16个CPU周期,并且从处理器线程Tn取出零个指令。然后指令被再次从处理器线程T1和T2取出,分别用于另外256个CPU周期和16个CPU周期,等等。指令取出可据此继续,直到一个或多个线程分配计数器内的值被改变。随着每个线程分配计数器T1-Tn达到0值,然后可编程的线程分配计数器316切换多路复用器350,以将和下一处理器线程关联的指令传给指令取出单元304,用于处理。
0065图4是多线程流水线处理器体系结构400的框图,该体系结构可操作用于处理两个或更多的处理器线程T1、T2…Tn。与处理器线程T1、T2…Tn相关联的指令可从,例如指令高速缓存(例如指令高速缓存402)获取。
0066在一个实施方式中,多线程流水线处理器体系结构400包括6个流水线阶段。这6个流水线阶段包括指令取出阶段(IF)、指令译码阶段(ID)、指令发布阶段(IS)、指令执行阶段(EX)、数据存储器读阶段(MEM)、和写回阶段(WB)。但是多线程流水线处理器体系结构400可包括不同数目的流水线阶段。多线程流水线处理器体系结构400还包括指令取出单元(IFU)404、译码器406、发布单元408、执行单元410、读逻辑412、写逻辑414、和可编程的线程分配控制器416。多线程流水线处理器体系结构400类似于图1的多线程流水线处理器体系结构,但是多线程流水线处理器体系结构400还包括位于每个流水线阶段(每个阶段前后一个)之间的组寄存器(set register)(例如寄存器A1-A7、B1-B7、N1-N7),用于存储在上下文切换期间对应的处理器线程T1、T2…Tn的状态。
0067寄存器A1-A7存储处理器线程T1的状态。以类似的方式,寄存器B1-B7存储处理器线程T2的状态,并且寄存器N1-N7存储处理器线程Tn的状态。在一个实施方式中,每个寄存器A1-A7、B1-B7、N1-N7存储对应的处理器线程的状态,包括存储在指定的指令周期结尾,多线程流水线处理器体系结构400的对应流水线阶段产生的数据的状态。例如,当处理与处理器线程T1关联的指令时,在指令周期的结尾,寄存器A3能够存储从译码器406接收的处理器线程T1的数据的状态,而寄存器A5能够存储从执行单元410接收的数据的状态。寄存器A1-A7、B1-B7、N1-N7有助于上下文切换,因为它们允许从指定的寄存器直接载入(或者存储到)对应的处理器线程的状态。在一个实施方式中,每组寄存器A1-A7、B1-B7、N1-N7被定位于相对靠近多线程流水线处理器体系结构400内的功能单元(例如在每个流水线阶段之间),并且允许快速的上下文切换时间。
0068在一个实施方式中,可编程的线程分配控制器416通过切换位于每个流水线阶段(例如流水线阶段IF、ID、IS、EX、MEM、WB)之前或之后的一个或多个多路复用器和/或多路输出选择器(未示出),来自动执行上下文切换。下面联系图5讨论包括执行上下文切换的多路复用器和多路输出选择器的处理器的一个实施方式。当发生上下文切换时,和将发生上下文切换的当前处理器线程(例如处理器线程T1)关联的一组寄存器(例如寄存器A1-A7)存储当前处理器线程的状态。为了完成上下文切换,从与下一个处理器线程(例如处理器线程T2)关联的不同寄存器组(例如寄存器B1-B7)载入下一个处理器线程的状态。流水线处理器在以下的指令周期中处理下一个处理器线程。在一个实施方式中,上下文切换发生在指令周期的结尾(也就是在来自流水线阶段的数据已经被保存到相关联的寄存器之后),以允许无缝的上下文切换。
0069图5说明了多线程流水线处理器500的框图,处理器500是根据处理两个线程T1、T2的多线程流水线处理器体系结构400构造的。在一个实施方式中,多线程流水线处理器500包括指令取出单元504、译码器506、寄存器文件508、发布单元510、两阶段执行单元512、重排序缓冲器514和可编程的线程分配控制器516。多线程流水线处理器500还包括对应于处理器线程T1的第一组寄存器A1-A6,和对应于处理器线程T2的第二组寄存器B1-B6。多线程流水线处理器500还包括程序计数器T1、T2、多路复用器(MUX)550和多路输出选择器(DE-MUX)552。
0070在一个实施方式中,在指令取出(IF)阶段期间,指令取出单元504从例如指令高速缓存502获取要被执行的指令。指令取出单元504根据程序计数器T1、T2获取指令。在一个实施方式中,程序计数器T1表示处理器线程T1的执行状态(也就是相对于和处理器线程T1相关联的指令序列,多线程流水线处理器500在的地方),而程序计数器T2表示与处理器线程T2关联的执行状态。
0071在指令译码阶段(ID)期间,由指令取出单元504获取的指令被译码。
0072在指令发布阶段(IS)期间,在一个实施方式中,译码的指令被发送给重排序缓冲器514(通过发布单元510)。重排序缓冲器514存储译码的指令,直到译码的指令被发布用于执行。在一个实施方式中,重排序缓冲器514是循环缓冲器。
0073重排序缓冲器514也存储执行的指令的结果,直到执行的指令准备好退出,例如,进入寄存器文件508。在一个实施方式中,寄存器文件508包括两个存储体T1、T2。存储体T1存储和处理器线程T1关联的数据,存储体T2存储和处理器线程T2关联的数据。寄存器文件508能够包括线程指数(未示出),其表示从哪个寄存器装载数据。线程指数确保来自与当前执行的处理器线程相关联的寄存器的数据能够被载入寄存器文件508。
0074在执行阶段EX1、EX2期间,执行单元512执行从发布单元510发布的译码指令。执行单元512可以是任何类型的执行单元,如上面讨论的。虽然显示的执行单元512具有两个流水线阶段,但是执行单元512可以具有不同数目的流水线阶段。在一个实施方式中,执行指令的结果被写回重排序缓冲器514,然后退回到寄存器文件508。
0075可编程的线程分配控制器516可操作被编程,以为每个处理器线程T1、T2存储处理器时间分配。在一个实施方式中,可编程的线程分配控制器516通过切换分别位于多线程流水线处理器500的每个流水线阶段(例如流水线阶段IF、ID、IS、EX1、EX2)之前和之后的多路复用器550和多路输出选择器552,来自动执行处理器线程T1、T2之间的上下文切换。例如在多线程流水线处理器500正在处理处理器线程T1的时间期间,多路复用器550和多路输出选择器552被控制,以传递与处理器线程T1关联的指令(通过多线程流水线处理器500的流水线阶段)。处理器线程T2的状态信息被存储在寄存器B1-B6中。当从处理器线程T1发生上下文切换时,寄存器A1-A6存储处理器线程T1的状态,而且处理器线程T2的状态从寄存器B1-B6被载入(通过多路复用器550和多路输出选择器552),并且被多线程流水线处理器500处理。在一个实施方式中,每个多路复用器550是2到1多路复用器,而每个多路输出选择器552是1到2多路输出选择器。
异常处理0076当根据多线程流水线处理器体系结构100、400构造的多线程流水线处理器(例如多线程流水线处理器300、500)检测到异常时,指令执行的正常序列被中止(挂起)。异常是导致正常程序执行中止的事件。异常的类型包括,例如寻址异常、数据异常、操作异常、溢出异常、保护异常、下溢异常等等。异常可由硬件或软件产生。
0077图6说明了一种方法,其在根据多线程流水线处理器体系结构100、400实现的多线程流水线处理器中执行异常处理。异常请求发生在正在执行给定线程的指令i时(步骤602)。和每个处理器线程关联的程序计数器值,连同在多线程处理器的流水线内的当前指令的状态被保存(步骤604)。在一个实施方式中,多线程处理器的流水线内的所有指令被中止或刷新。多线程处理器跳到和给定线程关联的异常处理例程(步骤606)。在一个实施方式中,每个处理器线程具有一个关联的异常处理例程,其与和其他处理器线程关联的异常处理例程分开,并且是独立的。在一个实施方式中,单个异常处理例程为所有的处理器线程执行异常请求。
0078异常请求由指定的异常处理例程执行(步骤608)。在异常请求已经被多线程处理器执行之后,程序计数器值在处理器的程序计数器内被恢复,而且指令(在异常请求前面)的状态在多线程处理器的流水线内被恢复(步骤610)。多线程处理器在从异常处理例程返回之后,继续或重新开始(resume)下一指令(例如指令i+1)的程序执行(步骤612)。在步骤612,如果指令i要被重新执行,多线程处理器能够在指令i处重新开始执行程序指令。
中断处理0079根据多线程流水线处理器体系结构100、400实现的多线程流水线处理器内的中断的处理类似于异常。图7说明了在根据多线程流水线处理器体系结构100、400实现的多线程流水线处理器内用于处理中断的方法。
0080中断发生在给定线程的指令i正在被执行时(步骤702)。与每个处理器线程关联的程序计数器值,连同在多线程处理器的流水线内当前指令的状态被保存(步骤704)。多线程处理器跳到和给定线程相关联的中断处理例程(步骤706)。在一个实施方式中,每个处理器线程具有相关联的中断处理例程,该例程具有一个入口点,该入口点独立于与其他处理器线程关联的中断处理例程相关联的入口点,并且它们是分开的。入口点是中断处理例程的起始地址。在一个实施方式中,单个中断处理例程(具有单个入口点)为所有处理器线程执行中断。
0081中断是由指定的中断处理例程执行的(步骤708)。在中断已经被多线程处理器执行之后,程序计数器值在多线程处理器的程序计数器内被恢复,并且指令(在中断请求的前面)的状态在多线程处理器的流水线内被恢复(步骤710)。多线程处理器在从中断处理例程返回之后重新开始下一指令(例如指令i+1)的程序执行(步骤712)。
应用0082根据流水线处理器体系结构100、400构造的多线程流水线处理器能够被用于广泛范围的应用,包括更特殊的实时控制应用。示例应用包括数据存储应用、无线应用、计算机系统应用、蜂窝WLAN应用、网际协议语音(VOIP)应用、无线和有线网络设备应用、无线电视应用、宽带调制解调器应用、有线路由器应用、无线媒体应用、实时控制器应用、和如下面更详细描述的其他应用。本领域技术人员可意识到前面提到的应用可使用其他多线程处理器体系结构。可开发独立的软件程序线程而不影响其他处理器线程。此外,根据多线程处理器实施的处理分配,可保证每个处理器线程的计算资源。
硬盘驱动器系统0083如图8所示,多线程处理器808(例如多线程处理器300、500,如上面讨论的)能够被用于硬盘驱动器系统800,以基本执行所有和硬盘驱动器系统800相关联的处理功能。
0084硬盘驱动器系统800包括印刷电路板802。易失性(Vol.)存储器804存储读、写数据和/或与硬盘驱动器系统800的控制关联的易失性控制数据。易失性存储器804可以是具有低等待时间的存储器。例如,可使用SDRAM或其他类型的低等待时间存储器。也可提供非易失性(NV)存储器806比如闪存来存储重要数据,比如永久性控制代码。控制代码可包括系统级程序代码,其包括磁盘驱动器数据捕获程序代码、错误改正程序代码、主机协议管理程序代码、高速缓存管理程序代码、和缺陷管理器程序代码。主机协议管理程序代码可包括管理一个或多个以下协议高级技术附加装置(ATA)、串行高级技术附加装置(SATA)、消费电子ATA(CE-ATA)、通用串行总线(USB)、串行连接的小型计算机系统接口(SAS)、光纤通道(FC)、或者安全数字输入/输出(SDIO)的程序代码。易失性存储器804、非易失性存储器806或者其他存储器(例如高速缓存存储器)(未示出)也能够存储伺服相关的程序代码——例如如下面更详细讨论的那样操作主轴/VCM(音圈电机)驱动器814的程序代码。易失性存储器804、非易失性存储器806或者其他存储器能够进一步存储用户提供的程序代码——例如第三方提供的程序代码。用户提供的代码也可由多线程处理器808执行。
0085多线程处理器808执行与硬盘驱动器系统800的操作相关的数据和/或控制处理。在一个实施例中,多线程处理器808执行多个处理器线程,其各个都专用于指定的处理器功能。例如,由多线程处理器808执行的多个处理器线程支持硬盘控制模块(HDC)810的操作。硬盘控制模块810与输入/输出接口812、主轴/音圈电机(VCM)驱动器814和读/写通道模块816通信。通过多线程处理器808执行的一个或多个处理器线程,硬盘控制模块810协调主轴/VCM驱动器814、读/写通道模块816的控制以及通过接口812进行的与主机818的数据输入/输出。
0086如上面讨论的,多线程处理器808能够执行一个或多个处理器线程,这些线程专用于和读/写通道模块816相关联的处理功能。例如,在写操作期间,读/写通道模块816(通过多线程处理器808执行的一个或多个处理器线程)能够通过读/写器件820编码要写上的数据。使用多线程处理器808,读/写通道模块816也能够可靠地处理写信号,并且可对数据应用,例如纠错编码(ECC)、游程长度受限编码(RLL)等等。同样地,在读操作期间,读/写通道模块816(使用多线程处理器808执行的一个或多个处理器线程)能够将读/写器件820的模拟读信号输出转换为数字读信号。然后,通过传统技术对转换的信号进行检测和译码,以使用多线程处理器808执行的一个或多个处理器线程来恢复由读/写器件820读取的数据。
0087多线程处理器808也能够执行一个或多个处理器线程,这些线程专用于和硬盘驱动器部件(HDDA)822相关联的处理功能。硬盘驱动器部件822包括一个或多个硬驱动盘片824,其包括存储磁场的磁涂层。盘片824被示意性地示为826的主轴电机旋转。一般主轴电机826在读/写操作期间以可控的速度旋转硬驱动盘片824。一条或多条读/写臂828相对于盘片824移动,以从硬驱动盘片824读取数据或向其写数据。主轴/VCM驱动器814控制旋转盘片824的主轴电机826。主轴/VCM驱动器814也产生定位读/写臂828的控制信号,例如使用音圈致动器、步进电机或者任何其他合适的致动器。多线程处理器808执行的一个或多个处理器线程也能够被用于产生控制信号。
0088读/写器件820的位置靠近读/写臂828的离中心端。读/写器件820包括写元件,比如产生磁场的感应器。读/写器件820也包括能够感应盘片824上的磁场的读元件(比如抗磁MR元件)。硬盘驱动器部件822包括放大模拟读/写信号的前置放大器电路830。当读取数据时,前置放大器电路(Preamp)830放大来自读元件的低电平信号并且输出放大的信号给读/写通道模块816。当写数据时,产生流过读/写器件820的写元件的写电流。写电流被切换,以产生具有正负极的磁场。正负极被硬盘驱动器盘片824存储,并且用于表示数据。
0089部分硬盘驱动器系统800可由一个或多个集成电路(IC)或芯片实现。例如,多线程处理器808和硬盘控制模块810可由单个芯片实现。主轴/VCM驱动器814和/或读/写通道模块816也可由与多线程处理器808、硬盘控制模块810一样的芯片和/或附加的芯片实现。或者,除了硬盘驱动器部件822以外的大部分硬盘驱动器系统800可作为片上系统(SOC)实现。
DVD系统0090现在参考图9,显示的DVD系统900包括DVD印刷电路板(PCB)902,其包括易失性存储器904,易失性存储器904存储读数据、写数据和/或与DVD系统900的控制关联的易失性控制代码。易失性存储器904可包括易失性存储器,比如SDRAM或其他类型的低延迟存储器。非易失性存储器906比如闪存也可被用于重要的数据,比如关于DVD写格式的数据和/或其他的永久性控制代码。控制代码可包括如上面讨论的、与硬盘驱动器系统800(图8)有关的控制代码。易失性存储器904、非易失性存储器906或者其他存储器(例如高速缓存存储器)(未示出)也能够存储处理实时数据(例如实时音频或视频数据)的实时程序代码。
0091多线程处理器908基本完成与DVD系统900的操作相关的所有数据和/或控制处理。在一个实施方式中,多线程处理器908通过执行专用于下面讨论的、对应的处理功能的多个处理器线程来完成所有的处理功能。多线程处理器908也能够根据所需执行复制保护和/或压缩/解压缩的译码。
0092DVD控制模块910与输入/输出接口912、主轴/进给电机(FM)驱动器914、和读/写通道模块916通信。通过多线程处理器908,DVD控制模块910协调主轴/FM驱动器914、读/写通道模块916的控制和通过接口912进行的数据输入/输出。
0093在一个实施方式中,多线程处理器908执行专用于与读/写通道模块916关联的处理功能的一个或多个处理器线程。例如,在写操作期间,读/写通道模块916使用多线程处理器908执行的程序代码,将要被光读/写(ORW)或光只读(OR)器件918写到DVD盘片上的数据编码。使用多线程处理器908执行的一个或多个处理器线程,读/写通道模块916可靠地处理信号,并且可应用例如ECC、RLL等等。在读操作期间,读/写通道模块916将ORW或OR装置918的模拟输出转换为数字信号。然后,可采用公知技术对转换后的信号进行检测和解码,以恢复写在DVD上的数据(例如使用多线程处理器908执行的程序代码)。
0094多线程处理器908也能够执行一个或多个处理器线程,其专用于与下面讨论的DVD部件(DVDA)920关联的基本所有处理功能。在一个实施方式中,DVD部件920包括光学地存储数据的DVD盘片922。盘片922由示意性地示于附图标记924处的主轴电机带动旋转。主轴电机924在读/写操作期间以受控和/或可变的速度旋转DVD盘片922。ORW或OR器件918相对于DVD盘片922移动,以从DVD盘片922读数据,和/或写数据到DVD盘片922。ORW或OR器件918典型地包括一个激光器和一个光传感器。
0095对于DVD读/写和DVD只读系统,在读操作期间,激光器被引导到DVD的轨道上,该轨道含有平面(land)和凹坑(pit)。光传感器感应由平面/凹坑造成的反射。对于DVD写应用,激光器也可被用于加热DVD盘片922上的印模层。在一个实施方式中,如果印模被加热到第一预定温度,印模就变得透明并且能用于表示一个第一二进制数字值。如果印模被加热到第二预定温度,印模就变得不透明并且能够用于表示一个第二进制数字值。
0096多线程处理器908也能够执行一个或多个处理器线程,其专用于与下面讨论的主轴/FM驱动器914关联的基本所有处理功能。主轴/FM驱动器914控制主轴电机924,主轴电机924可控地旋转DVD盘片922。主轴/FM驱动器914也产生定位进给电机(FM)926的控制信号,例如使用音圈致动器、步进电机或者任何其他合适的致动器。进给电机926一般相对于DVD盘片922径向地移动ORW或OR器件918。激光驱动器928基于读/写通道模块916的输出产生激光驱动信号。DVD部件920包括一个放大模拟读信号的前置放大器电路930。当读取数据时,前置放大器电路930放大来自ORW或OR器件918的低电平信号并且输出放大的信号给读/写通道模块916。
0097DVD系统900还包括一个编解码器(Codec)模块932,其编码和/或解码视频,例如任何MPEG格式的视频。也能够将多线程处理器908执行的一个或多个处理器线程分配给编解码器模块932,用于编码/解码。音频和/或视频数字信号处理器和/或模块934和936分别执行音频和/或视频信号处理。也能够将多线程处理器908执行的一个或多个处理器线程分配给音频和视频数字信号处理器934和936,用于信号处理。
0098与硬盘驱动器系统800一样,DVD系统900中的部件可由一个或多个集成电路(IC)或芯片实现。例如,多线程处理器908和DVD控制模块910可由单个芯片实现。主轴/FM驱动器914和/或读/写通道模块916也可由与多线程处理器908、DVD控制模块910一样的芯片和/或额外的芯片实现。在一个实施方式中,除了DVD部件920以外的大部分DVD系统900可实现为SOC。
蜂窝WLAN系统0099图10说明了蜂窝无线局域网(WLAN)系统1000,该系统包括多线程处理器1002。在一个实施方式中,多线程处理器1002基本执行与蜂窝无线局域网系统1000关联的所有处理功能。蜂窝无线局域网系统1000可以是,例如具有无线保真(WI-FI)能力或视频电话的蜂窝电话。蜂窝无线局域网系统1000能够支持以下一个或多个多媒体部件包括内建的数字相机或可携式摄像机、电视(TV)调谐器、数字广播和/或对讲机。在一个实施方式中,多线程处理器1002执行一个或多个处理器线程,这些线程对应于这些多媒体部件中的每一个。
0100在一个实施方式中,蜂窝无线局域网系统1000包括WLAN单元1004、蜂窝单元1006、蓝牙单元1008、全球定位系统(GPS)单元1010和显示屏幕1012。可选地,蜂窝无线局域网系统1000可以不包括所有这些功能。
0101WLAN单元1004包括RF收发器1016、基带处理器(BBP)1016和介质访问控制器(MAC)(未示出)。RF收发器1014从其他无线设备和其他网络设备接收RF信号/将RF信号传给其他无线设备和其他网络设备,这些设备包括,例如中继器、路由器等等。在一个实施方式中,RF收发器1014根据蜂窝无线局域网系统1000使用的射频传输协议处理来自/到基带的RF信号。基带处理器1016执行信号处理,其包括,例如编码/解码和纠错。多线程处理器1002能够执行一个或多个处理器线程,这些线程执行和基带处理器1016关联的信号处理功能。MAC包括一个或多个用于处理接收的/和待传输的信号以及与网络组件相连接的例程。可使用多线程处理器1002执行这些例程。
0102蜂窝单元1006包括蜂窝收发器1018和协议栈1020。在一个实施方式中,蜂窝收发器1018包括GSM RF收发器。在一个实施方式中,蜂窝收发器1018根据协议栈1020使用的GSM射频传输协议处理来自/到基带的GSM RF信号。协议栈1020可实现其他协议,包括码分多址(CDMA)、G3和其他蜂窝协议标准。与蜂窝电话功能关联的信号处理管理、菜单功能等等能够通过多线程处理器1002执行的一个或多个处理器线程实现。
0103可选地,蜂窝WLAN系统1000包括蓝牙单元1008。蓝牙单元1008包括蓝牙收发器1022。在一个实施方式中,蓝牙收发器1022是短距离无线收发器。在一个实施方式中,数字信号处理器(未示出)根据蜂窝WLAN系统1000使用的蓝牙协议来处理蓝牙信号(执行一个或多个处理器线程)。
0104可选地,蜂窝WLAN系统1000包括GPS单元1010。GPS单元1006包括GPS收发器1020。在一个实施方式中,GPS收发器1020根据蜂窝WLAN系统1000使用的GPS射频传输协议来处理来自/到基带的GPS RF信号。支持蓝牙协议需要的其他处理功能能够由多线程处理器1002执行的处理器线程实现。
0105可选地,蜂窝WLAN系统1000包括显示屏幕1012。显示屏幕1012为用户提供图形用户界面。在一个实施方式中,显示屏幕1012是液晶显示器。在一个实施方式中,显示屏幕1012显示和视频电话关联的视频数据。图形用户界面可通过存储在随机存取存储器1024、闪存存储器1026或者其他存储器(未示出)中的一个或多个蜂窝操作系统提供。在一个实施方式中,多线程处理器1002处理操作系统和任何其他执行一个或多个关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括蜂窝通信相关的程序代码或系统级程序代码。在一个实施方式中,蜂窝通信相关的程序代码涉及以下协议中的一个或多个CDMA、G3、GSM等等。在一个实施方式中,系统级程序代码包括以下代码中的至少一种菜单程序代码、显示程序代码、MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线/有线通信程序代码或安全管理程序代码。该程序代码也可存储在随机存取存储器(RAM)1024、闪存存储器1026或者其他存储器中。可存储其他程序代码,例如,上面讨论的用户提供的代码。
VoIP系统0106图11说明了网际协议语音(VoIP)系统1100,其包括多线程处理器1102。在一个实施方式中,多线程处理器1102基本执行和VoIP系统1100关联的所有处理功能。在一个实施方式中,VoIP系统1100包括WLAN单元1104、VoIP栈1106和编解码器(CODEC)1108。虽然显示的VoIP系统1100包括WLAN单元1104,但是VoIP可包括LAN单元(未示出),用于连接到非无线局域网。
0107WLAN单元1104包括RF收发器1110、基带处理器1112和介质访问控制器(MAC)1114。RF收发器1110从其他无线设备和其他网络设备接收RF信号及传输RF信号到其他无线设备和其他网络设备,用于传输语音数据包。在一个实施方式中,RF收发器1110依照VoIP栈1106使用的VoIP协议,处理来自/到基带的RF信号。基带处理器1112能够执行信号处理,其包括例如编码/解码、压缩/解压缩和纠错。多线程处理器1102能够执行一个或多个处理器线程,以完成和基带处理器1112关联的某些或所有处理功能。MAC1114包括一个或多个处理例程(未示出),用于处理接收的/和待传输的信号,并且和网络组件相接(使用多线程处理器1102)。在一个实施方式中,编解码器1108将数字信号转换成模拟信号,或者反之。信号转换处理可以使用多线程处理器1102执行的一个或多个处理器线程。
0108在一个实施方式中,多线程处理器1102处理执行一个或多个相关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括语音处理相关的程序代码和系统级程序代码。在一个实施方式中,语音处理相关的程序代码是和处理语音信号相关联的程序代码,用于将语音信号转换成适合在网络上传输的形式。在一个实施方式中,系统级程序代码包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线/有线通信程序代码或安全管理程序代码。在一个实施方式中,RAM存储器1116和/或闪存存储器1118可存储实时程序代码、用户提供的程序代码(上面讨论的)或者将被VoIP系统1100执行的其他程序代码(上面讨论的)。
无线网络设备0109图12说明了包括多线程处理器1202的无线网络设备1200。无线网络设备1200可以是,例如无线路由器、无线接入点等等。在一个实施方式中,多线程处理器1202基本执行和无线网络设备1200关联的所有处理功能。在一个实施方式中,无线网络设备1200包括RF收发器1204、基带处理器1206和MAC 1208。无线网络设备1200可包括通过例如防火墙或(虚拟专用网络)VPN到有线局域网连接的接口。RF收发器1204从网络设备接收RF信号及传输RF信号到网络设备,网络设备包括例如无线客户机(未示出)。RF收发器1204依照无线网络设备1200使用的射频传输协议,处理来自/到基带的RF信号。基带处理器1206能够执行信号处理,其包括例如编码/解码、压缩/解压缩和纠错。多线程处理器1202能够执行一个或多个处理器线程,以完成和基带处理器1206关联的某些或所有处理功能。MAC 1208包括一个或多个处理例程,用于处理接收的/和待传输的信号,并且和网络组件相接,这些处理例程可由(也就是处理器线程可由)多线程处理器1202执行。
0110可选地,多线程处理器1102可用于执行和无线网络设备1200相关联的其他程序代码。在一个实施方式中,MAC 1208包括安全管理引擎1210,其使用一个或多个无线客户机初始化和更新配置信息。安全管理引擎1210可被用于根据需要产生服务集标识(SSID)、安全密钥和个人识别号(PIN)。安全管理引擎1210可以是硬件(电路)、软件、固件或者其组合的形式。在一个实施方式中,多线程处理器1202基本提供和MAC 1208关联的所有处理功能。
0111在一个实施方式中,多线程处理器1202处理执行一个或多个相关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括无线网络相关的程序代码和系统级程序代码。在一个实施方式中,无线网络相关的程序代码包括以下代码中的至少一种路由程序代码、网络程序代码、接入点程序代码、中继器程序代码、或实现无线通信协议的程序代码。在一个实施方式中,系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线通信程序代码或安全管理程序代码。在一个实施方式中,RAM存储器1116和/或闪存存储器1118存储实时程序代码、用户提供的程序代码(上面讨论的)或者无线网络设备1200的多线程处理器1202执行的其他程序代码(上面讨论的)。
无线电视系统0112图13说明了包括多线程处理器1302的无线电视系统1300。在一个实施方式中,多线程处理器1302基本执行和无线电视系统1300关联的所有处理功能。在一个实施方式中,无线电视系统1300包括RF收发器1304、基带处理器1306、MAC 1308和视频/音频接收器1310。RF收发器1304从网络设备接收RF信号及传输RF信号到网络设备,网络设备包括例如无线路由器、接入点等等。RF收发器1304依照无线电视系统1300使用的射频传输协议,处理来自/到基带的RF信号。基带处理器1306能够执行信号处理,其包括例如编码/解码和纠错。多线程处理器1302能够执行一个或多个处理器线程,以完成和基带处理器1306关联的某些或所有处理功能。MAC 1308包括一个或多个处理例程(由多线程处理器1302执行),用于处理接收的/和待传输的信号,并且和网络组件相接。
0113视频/音频接收器1310接收视频和音频信号。视频/音频信号能使用多线程处理器1302执行的一个或多个处理器线程来处理。在一个实施方式中,多线程处理器1302也处理执行一个或多个关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括媒体相关的程序代码和系统级程序代码。在一个实施方式中,媒体相关的程序代码包括视频处理程序代码或音频处理程序代码中的至少一种代码。在一个实施方式中,系统级程序代码包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。在一个实施方式中,RAM存储器1312、闪存存储器1314和/或其他存储器(未示出)存储实时程序代码或其他对例如通过视频/音频接收器1310接收的视频/音频信号进行操作的程序代码。程序代码的其他例子包括,例如编解码器。
宽带调制解调器0114图14说明了包括多线程处理器1402的宽带调制解调器1400。在一个实施方式中,宽带调制解调器1400是线缆调制解调器、数字用户链接(DSL)调制解调器、卫星调制解调器等等。在一个实施方式中,多线程处理器1402基本执行和宽带调制解调器1400关联的所有处理功能。宽带调制解调器1400可以被连接到,例如有线(电缆)电视线路,并且提供到因特网的连续连接给连接的设备(例如计算机系统)。在一个实施方式中,宽带调制解调器1400包括一个调谐器1404、解调器1406、脉冲串或突发调制器(burst modulator)1408、MAC 1410和接口(I/F)1412。解调器1406、脉冲串调制器1408可在单个芯片内实现。
0115在一个实施方式中,调谐器1404直接连接到源(例如有线电视(CATV)输出口)。调谐器1404可包括内置的双工器(未示出),以提供通过调谐器1404的上游和下游信号。在一个实施方式中,调谐器1404接收数字调制的正交幅度调制(QAM)信号。
0116在接收方向,解调器1406产生中频(IF)信号。解调器1406能够执行模数(A/D)转换、QAM解调、MPEG帧同步和纠错(例如里德·所罗门(Reed Solomon)纠错)。在传输方向,脉冲串调制器1408给调谐器1404提供信号。在一个实施方式中,脉冲串调制器1408执行每个脉冲串的编码、在选定频率上的正交相移键控(QSPK)/QAM信号的调制,以及D/A转换。
0117MAC 1410包括多线程处理器1402执行的一个或多个处理例程(未示出),用于处理接收的/和待传输的信号,并且和网络组件相接。MAC 1410可在硬件或软件或者两者的组合中实现。通过MAC 1410传送的数据进入接口1412。接口1412可以是,例如以太网接口、USB接口或PCI总线接口。
0118在一个实施方式中,多线程处理器1402处理执行一个或多个相关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括宽带通信相关的程序代码和系统级程序代码。在一个实施方式中,宽带通信相关的程序代码可包括电缆通信程序代码、DSL通信程序代码或卫星通信程序代码。在一个实施方式中,系统级代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。在一个实施方式中,RAM存储器1414和/或闪存存储器1416存储实时程序代码、用户提供的程序代码(上面讨论的)或者宽带调制解调器1400执行的其他程序代码(上面讨论的)。
有线路由器
0119图15说明了有线路由器1500。在一个实施方式中,有线路由器1500包括多线程处理器1502、前端1506、信号处理器1508和接口(I/F)1510。在一个实施方式中,多线程处理器1502基本执行和有线路由器1500关联的所有处理功能。
0120在一个实施方式中,前端1506对从电话线接收的信号进行预放大、滤波和数字化处理。前端1506也能放大和滤波由数字模拟转换器(DAC)(未示出)产生的模拟信号,并且以正确的功率电平输送模拟信号。在一个实施方式中,信号处理器1508包括执行信号处理的例程,信号处理包括,例如多线程处理器1502能够执行的回声消除、纠错、数字编码或速率调整。I/F 1510允许有线路由器1500连接到高速设备。
0121在一个实施方式中,多线程处理器1502处理执行一个或多个相关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括联网相关的程序代码和系统级程序代码。在一个实施方式中,联网相关的程序代码包括以下代码中的至少一种路由程序代码、接入点程序代码、安全程序代码、中继器程序代码、虚拟专用网程序代码。在一个实施方式中,系统级程序代码可包括以下代码中的至少一种MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、无线通信程序代码或安全管理程序代码。在一个实施方式中,RAM存储器1512和/或闪存存储器1514存储实时程序代码、用户提供的程序代码(上面讨论的)或者有线路由器1500执行的其他程序代码(上面讨论的)。
无线媒体播放器0122图16说明了包括多线程处理器1602的无线媒体播放器1600。在一个实施方式中,多线程处理器1602基本执行和无线媒体播放器1600关联的所有处理功能。无线媒体播放器1600可以是输出是视频/音频的任何类型的无线设备。音频数据可包括和例如MP3/MP4、增强的知觉音频编码器(EPAC)、Q设计音乐回放、高级音频编码(AAC)、流畅音频、微软(MS)音频、杜比数字、真实音频(real audio,RA)、自由无损音频编解码器(FLAC)、或Windows媒体音频编码(WMA)相关联的音频数据。无线媒体播放器1600可以是MP3/MP4播放器、个人数字助理(PDA)等等。在一个实施方式中,无线媒体播放器1600包括WLAN单元1604和编解码器1606。
0123在一个实施方式中,WLAN单元1604包括RF收发器1608、基带处理器1610、MAC 1612。RF收发器1608从其他无线设备和其他网络设备接收RF信号及传输RF信号到其他无线设备和其他网络设备。RF收发器1608依照无线媒体播放器1600使用的射频传输协议,处理来自/到基带的RF信号。基带处理器1610能够执行信号处理,其包括例如编码/解码和纠错。多线程处理器1602能够执行一个或多个处理器线程,以完成和基带处理器1610关联的某些或所有处理功能。MAC 1612包括多线程处理器1602执行的一个或多个处理例程(未示出),用于处理接收的/和待传输的信号,并与网络组件相接或接口。在一个实施方式中,编解码器1606包括对RF收发器1608接收的信号进行编码和/或解码的程序代码。可以使用多线程处理器1602执行的一个或多个处理器线程处理编码和/或解码程序代码。在一个实施方式中,编解码器1606包括对数据进行压缩和解压缩的程序代码。编解码器1606可在软件、硬件或者两者的组合中实现。计算机视频的编解码器的例子包括MPEG、Indeo和Cinepak2。
0124在一个实施方式中,多线程处理器1602处理执行一个或多个相关联的处理器线程的程序代码指令。程序代码可包括实时程序代码。程序代码也可包括媒体相关的程序代码和系统级程序代码。在一个实施方式中,媒体相关的程序代码可包括音频相关的程序代码和视频相关的程序代码。在一个实施方式中,系统级程序代码可包括以下代码中的至少一种伺服相关的程序代码、磁盘驱动器数据捕获程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、高速缓存管理程序代码、缺陷管理器程序代码或加密和安全管理程序代码。在一个实施方式中,RAM存储器1614、闪存存储器1616、非易失性存储器1618和/或其他存储器(未示出)可存储实时程序代码、用户提供的程序代码和/或无线媒体播放器1600执行的其他程序代码(上面讨论的)。
实时控制器0125图17说明了包括多线程处理器1702和控制器1703的实时控制器1700。实时控制器1700操作处理实时程序代码和控制可控的设备(未示出)。在一个实施方式中,多线程处理器1702基本执行和实时控制器1700关联的所有处理功能。实时控制器1700可以是处理实时程序代码的任何类型的无线或有线设备。
0126在一个实施方式中,RAM存储器1714和/或闪存存储器1716存储将由实时控制器1700执行的实时程序代码。可以使用多线程处理器1702执行的一个或多个处理器线程来处理实时程序代码。
0127已经描述了许多实施方式。但应理解的是,可以进行各种修改。例如,虽然上面的应用是包括单个多线程处理器,但这些应用中的任何一个均可包括两个或更多的多线程处理器。例如,硬盘驱动器系统800能够包括两个多线程处理器(如第一多线程处理器和第二多线程处理器)。在一个实施方式中,第二多线程处理器执行第一多线程处理器不执行的处理器线程。而且,上文所述方法的步骤可以按照不同的顺序执行,并且仍然能够达到所希望的结果。据此,其他实施方式处于所附权利要求的范围内。
权利要求
1.一种装置,其包括一个多线程处理器,其适合执行程序代码的至少两个线程,所述多线程处理器包括一个执行流水线,和一个线程控制单元,其控制所述执行流水线,以将应用相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
2.根据权利要求1所述的装置,其中所述装置包括一个媒体播放器设备,而且所述应用相关的程序代码包括音频或视频媒体处理相关的程序代码。
3.根据权利要求2所述的装置,进一步包括一个存储介质,其上存储了音频或视频数据中的至少一种数据;和一个输出设备,其输出所述音频或视频数据中的所述至少一种数据。
4.根据权利要求1所述的装置,其中所述装置包括一个无线网络设备,而且所述应用相关的程序代码包括无线联网相关的程序代码。
5.根据权利要求4所述的装置,其中所述无线网络设备是无线路由器或无线接入点中的一种。
6.根据权利要求1所述的装置,其中所述装置包括一个宽带调制解调器,而且所述应用相关的程序代码包括宽带通信相关的程序代码。
7.根据权利要求6所述的装置,其中所述宽带通信相关的程序代码包括有线通信程序代码、DSL通信程序代码或卫星通信程序代码。
8.根据权利要求1所述的装置,其中所述装置包括一个有线路由器,而且所述应用相关的程序代码包括联网相关的程序代码。
9.根据权利要求4和8中任一项所述的装置,其中所述联网相关的程序代码包括以下代码中的至少一种路由程序代码、网络程序代码、接入点程序代码、安全程序代码、中继器程序代码、实现无线通信协议的程序代码或虚拟专用网络程序代码。
10.根据权利要求2、4、6和8中任一项所述的装置,其中所述系统级程序代码包括以下代码中的至少一种伺服相关的程序代码、磁盘驱动器数据捕获程序代码、视频处理程序代码、音频处理程序代码、MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。
11.根据权利要求2、4、6和8中任一项所述的装置,其中所述执行流水线包括一个指令取出单元;一个响应所述指令取出单元的译码器;一个响应所述译码器的发布单元;以及一个响应所述发布单元的执行单元。
12.根据权利要求2、4、6和8中任一项所述的装置,进一步包括一个第二多线程处理器,其适合执行程序代码的至少两个线程,所述第二多线程处理器包括,一个第二执行流水线,和一个第二线程控制单元,其控制所述第二执行流水线,以将第一实时程序代码作为第三线程执行,而将第二实时程序代码作为第四线程执行。
13.一种系统,其包括权利要求1、11和12中任一项所述的装置;且其中所述应用相关的程序代码包括通信相关的程序代码。
14.根据权利要求13所述的系统,其中所述系统包括蜂窝无线局域网系统,并且所述通信相关的程序代码包括蜂窝通信相关的程序代码。
15.根据权利要求14所述的系统,其中所述蜂窝通信相关的程序代码涉及以下协议中的一种或多种CDMA、G3或GSM。
16.根据权利要求13所述的系统,其中所述系统包括VoIP系统,并且所述通信相关的程序代码包括语音处理相关的程序代码。
17.根据权利要求16所述的系统,其中所述线程控制单元进一步控制所述执行流水线,以将编解码器相关的程序代码作为第三线程执行。
18.根据权利要求13所述的系统,其中所述系统包括无线电视系统,而且所述通信相关的程序代码包括媒体相关的程序代码。
19.根据权利要求18所述的系统,其中所述媒体相关的程序代码包括视频处理程序代码或音频处理程序代码中的至少一种。
20.根据权利要求14、16和18中任一项所述的系统,其中所述系统级程序代码包括以下代码中的至少一种菜单程序代码、显示程序代码、MAC程序代码、WLAN程序代码、网络通信程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码、加密/解密程序代码、压缩/解压缩程序代码、有线/无线通信程序代码或安全管理程序代码。
21.一种实时控制器,其包括一个多线程处理器,其适合执行程序代码的至少两个线程,所述多线程处理器包括,一个执行流水线,和一个线程控制单元,该线程控制单元控制所述执行流水线,以将第一实时程序代码作为第一线程执行,而将第二实时程序代码作为第二线程执行。
22.根据权利要求21所述的实时控制器,其中所述第一实时程序代码是视频处理程序代码,所述第二实时程序代码是音频程序代码。
23.根据权利要求21所述的实时控制器,进一步包括一个存储控制器,且所述第一实时程序代码包括伺服相关的程序代码,所述第二实时程序代码包括系统级程序代码。
24.根据权利要求23所述的实时控制器,其中所述存储控制器包括硬盘控制器或光盘控制器。
25.根据权利要求24所述的实时控制器,其中所述主机协议管理程序代码管理以下协议中的至少一种ATA、USB、SATA、SAS、FC、CE-ATA或SDIO。
26.根据权利要求21、23和24中任一项所述的实时控制器,进一步包括一个第二多线程处理器,其适合执行程序代码的至少两个线程,所述第二多线程处理器包括一个第二执行流水线,和一个第二线程控制单元,其控制所述第二执行流水线,以将第三实时程序代码作为第三线程执行,而将第四实时程序代码作为第四线程执行。
27.根据权利要求26所述的实时控制器,其中所述第二多线程处理器执行所述第一多线程处理器不执行的程序代码的给定线程。
28.根据权利要求24所述的实时控制器,其中所述线程控制单元进一步控制所述执行流水线,以将额外的程序代码作为第三线程执行。
29.根据权利要求24所述的实时控制器,其中所述系统级程序代码包括以下代码中的至少一种磁盘驱动器数据捕获程序代码、DVD数据捕获程序代码、错误改正程序代码、视频处理程序代码、音频处理程序代码、主机协议管理程序代码、高速缓存管理程序代码、缺陷管理器程序代码或加密和安全管理程序代码。
30.根据权利要求21、23和24中任一项所述的实时控制器,其中所述执行流水线包括一个指令取出单元;一个响应所述指令取出单元的译码器;一个响应所述译码器的发布单元;以及一个响应所述发布单元的执行单元。
全文摘要
在一个实施方式中,提供一种实时控制器。所述实时控制器包括一个多线程处理器,其适合执行程序代码的至少两个线程。所述多线程处理器包括一个执行流水线,和一个线程控制单元,该线程控制单元控制执行流水线,以将与媒体处理相关的程序代码作为第一线程执行,而将系统级程序代码作为第二线程执行。
文档编号G06F9/46GK1841332SQ200610065528
公开日2006年10月4日 申请日期2006年3月20日 优先权日2005年3月18日
发明者S·苏塔迪加 申请人:马维尔国际贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1