- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
利用多核PC技术进行 形编程
录入:edatop.com 点击:
在PC行业,多核处理正在引起相当大的反响,很大程度上是因为Intel和 AMD两家公司都各自发布了其首款多核处理器。这些首款多核处理器都是在一个物理处理器中包含有两个核,或者计算引擎,因此命名为双核处理器。具有两个以上核的处理器也即将面市。
多核与多处理器
多处理器系统多年前已经出现,它与多核系统的主要区别是多核系统只有一个物理处理器,这个物理处理器包含两个或更多个核,而多处理器系统有两个或更多个物理处理器。多核系统也共享计算资源,在多处理器系统中这些资源常常是被复制的,如L2高速缓存和前端总线。多核系统与多处理器系统性能相似,但成本常常要低得多,原因是多核处理器比多个相同的单个处理器价格要低,也不需要支持多个处理器的母板,如多处理器插头。
多任务
像多处理器系统一样,多核系统能同时执行多个计算任务。这一点在如Windows XP多任务操作系统(OS)中很有利,此时可以同时运行多个应用程序。多任务指OS在两个任务间快速切换的能力,表面上看,这些任务同时执行。当运行在多核系统上时,多任务OS能真正同时执行多个任务,而不只是表面上看起来是。例如,在双核系统上,两个应用——如National Instruments LabVIEW 和Microsoft Excel,各自都能同时访问一个独立的处理器核,因此,提高了如进行数据记录的应用程序的整体性能。
多核与多处理器
多处理器系统多年前已经出现,它与多核系统的主要区别是多核系统只有一个物理处理器,这个物理处理器包含两个或更多个核,而多处理器系统有两个或更多个物理处理器。多核系统也共享计算资源,在多处理器系统中这些资源常常是被复制的,如L2高速缓存和前端总线。多核系统与多处理器系统性能相似,但成本常常要低得多,原因是多核处理器比多个相同的单个处理器价格要低,也不需要支持多个处理器的母板,如多处理器插头。
多任务
像多处理器系统一样,多核系统能同时执行多个计算任务。这一点在如Windows XP多任务操作系统(OS)中很有利,此时可以同时运行多个应用程序。多任务指OS在两个任务间快速切换的能力,表面上看,这些任务同时执行。当运行在多核系统上时,多任务OS能真正同时执行多个任务,而不只是表面上看起来是。例如,在双核系统上,两个应用——如National Instruments LabVIEW 和Microsoft Excel,各自都能同时访问一个独立的处理器核,因此,提高了如进行数据记录的应用程序的整体性能。
图1:双核系统可实现多任务操作系统,如Windows XP,真正同时执行两个任务。 多线程 多线程将多任务思想延伸到应用程序,所以可以将一个单独应用程序内的具体操作分成具体线程,各线程都能并行运行。这样,OS就不仅能在不同应用程序间,也可在一个应用程序的每个线程间划分处理时间。在多线程NI LabVIEW程序中,例如一个应用程序可分为3个线程:1个用户接口线程、1个数据采集线程和1个分析线程。可以给这些线程分配优先权,各自独立运行。因此,在多线程应用程序中,多任务能与正在其他系统上运行的其他应用程序一起并行进行。 采用多线程的应用优点很多,包括CPU使用效率更高,系统可靠性更高,多核系统的性能得到提高。 更高效地使用CPU 在很多应用程序中,资源可以同时调用,如在仪器中。完成这种调用常常需要花费很长时间。在单线程应用中,同步调用有效阻止或防止了应用程序内的任何其他任务的执行,直到该调用完成。多线程避免了这种情况的发生。当一个线程出现同步调用时,其他不依赖此调用的程序部分在其他线程下运行。应用程序继续执行,而不是等到此同步调用完成后再继续执行。这样,如果应用程序的任何一个线程准备运行,则CPU都可运行该线程,所以,多线程应用最大程度提高了CPU效率。 系统可靠性更高 通过将应用程序分成不同的执行线程,可以避免次要操作影响最重要操作的执行。最常见的例子是用户接口可能对时间更关键的操作的影响。屏幕更新或响应用户事件经常会降低应用程序的执行速度。给用户接口线程赋予的优先权比其他对时间要求更关键的操作事件的优先权要低些,就能保证用户接口操作不会阻止CPU执行更重要的操作,如采集数据或过程控制。 提高多核系统的性能 多线程最诱人的优点之一是可以利用多核系统完备的计算能力。在几个线程都同时准备运行的多线程应用程序中,每个核可以运行不同的线程,应用程序实现了真正的并行任务执行。这样不仅增强了前面讨论的CPU使用效率更高和系统可靠性更高这两个优点,而且使性能得到彻底提高。 图形编程的优点 根据定义,虚拟仪器有助于利用PC业的每一个创新。多核处理也一样。开发能充分利用多核处理器计算能力的软件时,就需要本质上具备并行性的开发工具。由于其顺序特征,如C 和C++这种基于文本的编程语言就要求调用函数,有计划地产生和管理线程。同时,由于文本语言的顺序的、一行接一行的特点,如何使不同代码部分的并行运行可视化常常很困难。 相比之下,像LabVIEW一类的图形编程环境可方便地表示并行过程,这是因为数据流本来就是并行的。在图形环境下并行代码的执行进行可视化更容易,在这种环境下,图形代码的两个并行执行路径并行放置。LabVIEW代码也天生就是多线程。LabVIEW能识别程序中的多线程机会,由执行系统处理多线程实现和通信。例如,两个没有任何依赖关系而运行的独立环在各自的线程内自动执行。当在多核系统中执行LabVIEW代码时,多线程在多个处理器核上运行,而不需用户进行任何干预。
|