CN106030538B - 通过编译器和os支持分离出i/o执行的***和方法 - Google Patents
通过编译器和os支持分离出i/o执行的***和方法 Download PDFInfo
- Publication number
- CN106030538B CN106030538B CN201580009706.7A CN201580009706A CN106030538B CN 106030538 B CN106030538 B CN 106030538B CN 201580009706 A CN201580009706 A CN 201580009706A CN 106030538 B CN106030538 B CN 106030538B
- Authority
- CN
- China
- Prior art keywords
- core
- source code
- program source
- operation region
- cores
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/451—Code distribution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/48—Incremental compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本实施例提供了通过结合编译器和操作***(Operating System,OS)技术进行输入/输出(Input/Output,I/O)执行的分离。所述实施例包括贡献多核或众核处理器中的已选核为I/O执行核,将基于编译器的分析应用于程序源代码的I/O区域的分类,使得所述OS能调度这些区域至所述指定的I/O核。在程序源代码的编译过程中,识别所述程序源代码的每个I/O操作区域。在所述已编译的程序源代码的执行过程中,调度每个I/O操作区域在预先选择的I/O核上进行执行。调度所述已编译的程序源代码的其他区域在其他核上进行执行。
Description
相关申请案交叉申请
本发明要求由Chen Tian等人于2014年2月19日递交的发明名称为“通过编译器和OS支持分离出I/O执行的***和方法”的第14184297号美国非临时申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文。
技术领域
本发明涉及计算领域,以及在特定实施例中,涉及一种通过编译器和操作***(Operating System,OS)支持分离出输入/输出(Input/Output,I/O)执行的***和方法。
背景技术
在计算***中,I/O是包括处理器和主存器的主控板与键盘、鼠标、磁盘或监视器等***设备(也称为I/O设备)进行通信的一种机制。由于设计、制作和连接方法上的差异性,在给处理器提供数据时,I/O设备通常比主存器的性能差。I/O执行和非I/O执行相混合的典型方法导致***吞吐量较低,也降低了计算密集型进程的性能,例如在***吞吐量的期望较高的云和数据中心等服务器集群中,或者在一些功耗和某些应用的服务质量(quality-of-service,QoS)较为重要的移动设备中。因此,需要一种能够更为高效地处理I/O执行的***和方法。
发明内容
根据本发明的一个实施例,一种执行输入/输出(Input/Output,I/O)和非I/O操作的多核计算***的方法包括:指定多个处理核中的至少一部分为I/O核,编译程序源代码,所述编译包括识别所述程序源代码的每个I/O操作区域。然后利用所述处理核执行所述程序源代码,所述程序源代码的执行包括在所述I/O核上调度所述I/O操作区域。
根据本发明的另一实施例,一种执行I/O和非I/O操作的多核计算***的方法包括:在程序源代码的编译过程中,确认所述程序源代码的每个I/O操作区域,将所述I/O操作区域从所述程序源代码中的其他区域中划分出来。该方法还包括:在所述已编译的程序源代码的执行过程中,调度所述I/O操作区域在预先选择的I/O核上进行执行,调度所述已编译程序源代码的所述其他区域在其他核上进行执行。
根据本发明的再一实施例,一种执行I/O和非I/O操作的多核计算机包括:多个处理核,以及用于存储至少一个处理器执行的编程的非瞬时性计算机可读存储介质。所述编程包括的指令用于:指定多个处理核中的至少一部分为I/O核,以及编译程序源代码,用于编译所述程序源代码的指令包括用于识别所述程序源代码的每个I/O操作区域的指令。所述编程还包括:利用所述处理核执行所述程序源代码的指令,用于执行所述程序源代码的指令包括用于在所述I/O核上调度所述I/O操作区域的指令。
上文仅粗略描述了本发明实施例的特征,以便下文中关于本发明的详细描述能够得到更好理解。下文中将描述本发明实施例的其他特征和优点,构成了本发明权利要求的内容。本领域技术人员应当理解,基于此处公开的理念和具体实施例,可便利地修改和设计与本发明具有相同目的的其他结构和过程。本领域技术人员也应意识到,这些同等建构不应背离附带权利要求中规定的本发明的精神和范围。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1示出了一种多核处理***;
图2示出了一种改进的处理***的实施例;
图3示出了一种处理I/O执行的编译器方案的实施例;
图4示出了分离出I/O执行的编译程序指令的示例;
图5示出了一种处理I/O执行的OS调度的实施例方案;
图6示出了一种通过编译器和OS支持分离和处理I/O执行的方法的实施例;
图7示出了可用于实施各种实施例的一种处理***。
除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
具体实施方式
下文将详细论述当前优选实施例的制作和使用。然而,应了解,本发明提供可在各种具体上下文中体现的许多适用的发明性概念。所论述的具体实施例仅仅说明用以实施和使用本发明的具体方式,而不限制本发明的范围。
从硬件角度来看,处理器和I/O设备各自独立运行,因此这种***中不得不引入同步机制以处理其操作。一般来讲,处理器和I/O设备操作之间的同步方法有两种。第一种方法,处理器能够执行某一进程中的指令序列,以周期性地读或写设备的状态寄存器,直到满足设定的条件。例如,所述条件可以为设备中发生某一期待事件,或者当前进程的时间片完全被消耗,这种情况下就切换至新的进程。这种方法叫做轮询。第二种方法,当某一事件发生时允许设备发送信号至处理器。所述信号中断所述处理器的当前执行,并能够调用OS调度器依据上下文切换至与所述事件有关系的进程。所述信号也被称为中断。这种基于中断的方法允许处理器在I/O上不被阻断地执行某一进程,而将已阻断的进程置于中断等待队列。
尽管这两种方法通过OS调度器提升了处理器的使用效率,但将计算密集型进程和I/O密集型进程置于同一处理器上降低了计算进程的性能和***吞吐量。例如,在基于轮询的***中,I/O进程可能在观察到期待的I/O事件之前就浪费了大量时间在轮询上。如果被浪费的时间分配到非I/O进程中,处理器的吞吐量就会得到大大提升。进一步地,轮询中执行的指令还造成了不必要的功耗。
另一方面,在基于中断的***中,每个I/O中断导致接收到中断的处理器暂停当前执行,跳至相应的中断处理程序,扫描中断队列,并在必要时调用所述调度器。如果处理器频繁接收I/O中断,运行在同一处理器上的计算进程的执行则被不断中断,导致性能不理想。多核或众核处理器的情况甚至可能更遭。例如,当第一核(核A)接收到中断,花费了一定量的时间进行处理。但是,如果所述中断是运行在第二核(核B)上的另一进程所期待的,核A要么通知核B所述中断已到达,要么通过确定核B是否已经收到相同的中断而忽略所述中断。结果核A在软件级别上引入了大量同步开销,或者浪费了时间。
鉴于上文所述,I/O执行和非I/O执行的混合降低了计算密集型进程的性能,也降低了***吞吐量,例如,不论是在***吞吐量的期待较高的云和数据中心等服务器集群中,还是在功耗和某些应用的QoS较为重要的移动设备中。为了克服上述方法的缺点,在此提供的实施例结合编译器和OS技术进行I/O执行的分离。所述实施例包括指定多核或众核处理器中的已选核为I/O执行核,将基于编译器的分析应用于进程(程序代码)的I/O区域的分类,使得所述OS能调度这些区域至所述指定的I/O核。该方案包括三个步骤:OS构建I/O核,编译器进行I/O区域分类,OS进行I/O区域调度。所述编译器分析允许应用中的所述I/O区域得以准确定位,并将有用信息高效地提取和传递给所述OS调度器。这样能够得到更好的调度决策,从而提升吞吐量和性能。
所述编译器还能为OS提供I/O区域中操作的详细信息。通过编程指示(编程语言指令)添加上述信息为指令中的参数。例如,所述编译器能够利用***呼叫分析、设定的成本模型、底层***资源(如,处理器/核的数量、可用内存、功率、网络带宽或其他资源)为每个区域确定I/O操作的数量、资源的类型和每种资源所需的数量、和/或优选的专用I/O核。所述编译器和调度器相结合的方案通过减少I/O相关的对于执行的干扰提升了计算密集型应用的性能,也能得到更高的***吞吐量。另一优点在于能在I/O区域实现更智能的I/O调度,所述编译器从不同的进程或线程中提取所述I/O区域。这样可能得到更高的I/O执行的吞吐量。该方案也能利用编译器传来的特定应用信息来降低I/O核上的功耗。
图1示出了一种普通的多核计算机***100。该***100包括多个处理器(如CPU)或处理器核110,每个都通过第一总线与主存器120(如随机访问存储器(random accessmemory,RAM))连接,通过第二总线与一个或多个I/O设备130连接。I/O设备130的示例包括显示器、键盘、计算机鼠标、打印机、硬盘驱动器、固态磁盘(闪存盘)或其他I/O设备。任一所述处理器或核110可以在某个时间示例中执行I/O指令或非I/O指令。非I/O指令的执行包括所述处理器/核110与所述存储器120之间的交换。所述处理器/核的操作一般比所述存储器的操作迅速。因此,为了更高效地(减少处理时间)处理所述非I/O指令,该***100也能利用具有比所述存储器120更少操作时间的超速缓存内存。所述I/O指令的执行包括所述处理器/核110和所述I/O设备130之间的交换,以及利用I/O内存或直接内存访问(directmemory access,DMA)。如上所述,可以使用所述中断或轮询的方法同步I/O和非I/O指令在所述处理器/核110的执行。
在所述中断方法中,该***100还使用高级可编程中断控制器(AdvancedProgrammable Interrupt Controller,APIC)。每个I/O中断使运行中的应用在任意点停止。所述中断由I/O设备130发起并通过所述第二总线(如,***部件互连标准(peripheralcomponent interconnect,PCI)总线)传递到所述APIC。然后所述APIC使用中断描述符表(interrupt descriptor table,IDT)触发合适的中断处理程序,所述中断处理程序再与I/O设备驱动器通信完成所述I/O指令执行,如I/O读或写命令。当所述I/O执行结束时,该***返回被中断的应用执行(非I/O执行)。该方案导致频繁中断(暂停)处理器/核110上运行的程序,影响CPU和内存边界应用。
图2示出了一种改进的多核***200的实施例,解决了应用/程序的执行被频繁中断的问题,从而提升了执行性能。该***200包括多个处理器(CPU)或核(在CPU中)210。所述处理器/核210通过第一总线与主存器220连接,通过第二总线与一个或多个I/O设备230连接。另外,所述处理器/核210中的一个或多个为专用I/O执行核。所述专用处理器/核210能够根据所述处理器/核210的工作负载或应用需求等随着时间的改变而改变。所述专用处理器/核210用于为一个或多个线程或进程执行I/O码214(I/O码1和I/O码2),剩余的处理器/核210用于执行非I/O码。在专用I/O处理器/核210上的I/O码214和在任意剩余(非I/O专用)处理器/核210上的非I/O码212可属于同一应用或进程线程。
为了在进程线程中分离I/O区域和非I/O区域的执行,(来自所述I/O设备230或APIC)的I/O中断被所述非I/O处理器/核210所屏蔽、或者阻断或者变透明。这样,所述专用I/O处理器/核210用于接收所有I/O中断。OS调度器调度所述线程的非I/O区域至非I/O核,调度I/O区域至I/O核。
如上所述,I/O核能够接收I/O设备中断。I/O中断能够通过中断请求(interruptrequest,IRQ)控制器从I/O设备发送至所述处理器或核。例如,IRQ控制器为基于x86架构的Intel 8259芯片,该芯片具有8个输入引脚。两个这样的引脚可以链接在一起,提供总共16个IRQ信号。在所述OS定义的所述中断描述符表中,这16个信号映射至16个中断向量。也能为所述多核***200使用更为高级的IRQ控制器,如用于x86架构的Intel APIC***。例如,该***200可包括本地APIC和I/O APIC,使得所述OS配置每个I/O中断通过哪个引脚路由至哪里。对于消息中断(message signaled interrupt,MSI)设备来说,信号不是通过引脚发送,而是通过内存写拦截,某一中断的目标由所述写操作中的内存地址确定。所述OS也能确定哪个核负责哪个中断。
可编程IRQ控制器的使用提供了一个把多核或众核平台中的核的一部分或一个子集用于I/O操作的机会。在一个实施例中,每个核的IRQ控制器被编程为只允许选定的核接收I/O中断。第一步,在启动时,所述OS选择核的一部分或一个子集为I/O核。所述部分能够定义为固定数量的核、核总容量的某一百分比或者二者的结合。所述部分也能基于试探方法,如I/O工作负载、***吞吐量或其他相关的***/应用参数或需求来动态确定。在这一步中,所有核的中断控制器设置为忽略所有I/O中断。第二步,当加载设备驱动器时,所述OS开启一个或多个I/O核上的中断处理能力。此步骤涉及中断处理程序的登记以及确保来自所述设备的中断被路由至这些核。对于基于IRQ的设备,所述OS配置所述IRQ控制器在这些I/O核上暴露相关引脚,使得来自这些设备的中断能够被捕获。对于基于MSI的设备,所述OS配置所述设备,使得任一中断生成内存操作都具有正确的目的地址。通过执行这两个步骤,确保所有I/O中断到达I/O核。因此,所有非I/O核不响应I/O中断。这样就能大大降低运行在这些核上的用户应用的中断次数。
编码或程序指令的I/O和非I/O区域由编译器在执行这些指令前划分。图3示出了一种处理I/O执行的编译器方案300的实施例。在程序的源代码中,如果一个代码包括多个I/O请求或中断,可导致密集的I/O操作,在此称为I/O区域。所述I/O区域为所述I/O核执行的目标代码。在程序的编译过程中,所述编译器识别所述区域并注解或标记所述区域的开始为IO_REGION_START或者任意合适的指示文本。所述区域的结尾注解为IO_REGION_END或者任意合适的指示文本。IO_REGION_START和IO_REGION_END都是编译指示或指令,编译器随后将其翻译为特定的OS***呼叫。所述***呼叫再指示所述调度器移动该I/O区域至I/O核,如上所述。编译器有两个角色。首先,编译器识别I/O操作。然后,编译器将代码分离成块序列,每个块再分为I/O密集或不密集。在I/O密集块中,相应地***上述两个编译指示。
烧录器可能不会意识到某些代码会引发I/O请求。因此,I/O操作一般会随机分散在代码中,使得结果可能并不理想。例如,可能存在过多较小的I/O区域,导致I/O调度器疲于发送任务至I/O核。为了缓解这一问题,编译器进行试探优化,综合考虑I/O区域和非I/O区域的大小、I/O请求的数量以及相应的I/O区域的预计执行时间和非I/O区域的预计执行时间。基于这一分析,编译器执行必要的代码调度,以创建I/O区域和非I/O区域之间更良好的平衡。
所述编译器方案300中,步骤302的I/O确认之后,原始代码在步骤304中划分为I/O区域和非I/O区域。所述编译器基于一个代码中I/O操作的数量和语句的数量的比率进行分区算法。如果所述比率超过设定阈值,所述代码当做I/O区域。当所述代码包括循环时,循环计数考虑在内,这意味着I/O操作的数量和语句的数量实际上都是动态数值。在步骤304的区域划分之后,步骤306的跨区域调度根据成本模型实施。所述成本模型指示每个I/O操作以及每个普通(非I/O)语句的平均运行时间成本。在跨区域调度的过程中,所述编译器基于所述成本模型和当前分区将代码从I/O区域移动至非I/O区域,或者从非I/O区域移动至I/O区域。这样调度的目的是创建I/O区域和非I/O区域之间的负载均衡。例如,对于一个在运行时间上为一千周期的I/O区域,所述编译器使得紧随的非I/O区域为N千周期长。所述整数N由所述多核***中的可用资源(如可用核、内存、功率或其他资源)确定。然后,步骤308的区域再划分中,所述编译器将连续的I/O区域或连续的非I/O区域合并,或者将某一区域划分为两个单独的区域。区域合并或分离由所述***中的可用资源确定。接下来的步骤310的区域敲定中,所述编译器在每个区域中***所述编译指示,可选地,还***指示I/O操作数量和预计运行时间周期的参数。图4示出了使用所述编译方案300之前和之后的程序指令的示例。
图5示出了在所述编译器方案300执行已编译源代码或程序时用于OS调度的实施例方案500。当程序中的I/O_REGION_START和I/O_REGION_END呼叫在I/O核上执行时,调用OS调度器。所述调度器用于将所有I/O区域移动至I/O核,并创建单独的I/O区域调度器来调度这些区域。在I/O_REGION_START呼叫时,当前进程(或线程)从原始调度器的准备队列移动至所述I/O调度器。在I/O_REGION_END呼叫时,激活进程(或线程)从所述I/O调度器移动至原始调度器,所述原始调度器再调度所述进程至所述非I/O核中的其中一个上。
图6示出了一种在多核***中使用编译器和OS支持分离I/O执行和非I/O执行的实施例方法600。步骤610中,OS指定多核或众核***中的一个或多个核为I/O核,所述I/O核在应用的进程线程中处理所有I/O指令。这些I/O核能够固定下来或者根据变化的试探方法(或***统计数据)动态变化。步骤620中,所述编译器解析程序代码,标记所述代码中的I/O区域。I/O的确定可以包括I/O密集操作和成本(如运行时间成本)的考虑。在步骤630中,OS调度器将I/O区域移动至I/O核,将剩余的区域移动至非I/O专用核。所述非I/O区域仍可包括一些I/O呼叫,相比I/O区域,这些呼叫不那么密集,因此,应该不会引起对非I/O核的频繁中断。当遭遇I/O区域时,所述OS调度器也可开启I/O调度器,从而更高效地调度I/O核上的I/O区域。
所述I/O调度器为单独的调度器,为来自不同进程的所有I/O区域进行调度决策。可以应用不同的算法和试探方法进一步提升***吞吐量。默认每个区域都能以循环方式处理。另外,所述I/O_REGION_START呼叫也能传递合适的信息,以方便所述I/O调度器以及优化实施。例如,如果两个来自不同进程的I/O区域正在期待同一设备上的不同事件,这两个事件的发生具有相关性(如,不可能同时发生),所述I/O调度器可通过调度这两个区域至一个I/O核以及遵循这种相关性来应用更智能的调度。
另外,所述I/O调度器能够在适当场景降低I/O核上的功耗。例如,如果相应的设备反应迟缓,所述I/O调度器能降低某些I/O区域执行的使用频率。如果必要,所述I/O调度器也能降低某些I/O核的使用频率,以进一步降低功耗。
图7为可用于实施各种实施例的处理***700的方框图。例如,所述处理***可以为服务器、数据中心、移动或用户设备、网络组件的一部分。处理***700可包括处理单元701,该处理单元801配有一个或更多输入/输出设备,例如扬声器、麦克风、鼠标、触摸屏、小键盘、键盘、打印机以及显示器等等。处理单元701可包括中央处理器(CPU)710、存储器720、大容量存储设备730、视频适配器740,以及连接到总线的输入/输出(I/O)接口790。所述总线可以为任何类型的若干总线架构中的一个或多个,包括存储总线或者存储控制器、外设总线等等。
所述CPU710可包括任何类型的电子数据处理器。存储器720可包括任意类型的***存储器,例如静态随机存取存储器(static random access memory,SRAM)、动态随机存取存储器(dynamic random access memory,DRAM)、同步DRAM(synchronous DRAM,SDRAM)、只读存储器(read-only memory,ROM)或其组合等等。在实施例中,存储器720可包括在开机时使用的ROM以及在执行程序时使用的存储程序和数据的DRAM。大容量存储器设备730可包括任意类型的存储设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息通过总线访问。大容量存储器设备730可包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。
视频适配器740以及I/O接口790提供接口以将外部输入以及输出装置耦合到处理单元上。如图所示,输入输出设备的示例包括耦合至视频适配器740的显示器760和耦合至I/O接口790的鼠标/键盘/打印机770的任意组合。其它设备可以耦合至处理单元701,可以利用附加的或更少的接口卡。举例来说,串行接口卡(未图示)可以用于为打印机提供串行接口。
处理单元701还包括一个或多个网络接口750,网络接口750可包括以太网电缆等有线链路,和/或到接入节点或者一个或多个网络780的无线链路。网络接口750允许处理单元701通过网络780与远程单元通信。例如,网络接口450可以通过一个或多个发射器/发射天线以及一个或多个接收器/接收天线提供无线通信。在一个实施例中,处理单元701耦合到局域网或广域网上以用于数据处理以及与远程装置通信,所述远程装置例如其它处理单元、因特网、远程存储设施或其类似者。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的***和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一***中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、***、子***和方法可以与其它***、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其他变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。
Claims (20)
1.一种执行输入/输出(Input/Output,I/O)和非I/O操作的多核计算***的方法,其特征在于,该方法包括:
指定多个处理核中的至少一部分为I/O核;
编译程序源代码,所述编译包括识别所述程序源代码的每个I/O操作区域;
利用所述多个处理核执行所述程序源代码,所述执行包括在所述I/O核上调度所述I/O操作区域。
2.根据权利要求1所述的方法,其特征在于,所述指定包括:
将所述多个处理核的中断控制器设置为忽略I/O中断;
在启动操作***(operating system,OS)时选择所述I/O核;
在为I/O设备加载驱动器时为所述I/O核开启中断处理程序。
3.根据权利要求2所述的方法,其特征在于,为所述I/O核开启中断处理程序包括配置中断请求(interrupt request,IRQ)控制器以暴露所述I/O核上的相关引脚,而暴露所述I/O核上的相关引脚则允许所述I/O核捕捉I/O中断。
4.根据权利要求2所述的方法,其特征在于,为所述I/O核开启中断处理程序包括在所述I/O设备上配置包括正确目的地址的中断生成内存操作。
5.根据权利要求1所述的方法,其特征在于,在多个处理核中指定至少一部分包括选择所述多个处理核中的固定数量或核总容量中的某一百分比为所述I/O核。
6.根据权利要求1所述的方法,其特征在于,还包括:从所述多个处理核中根据I/O工作负载、***吞吐量或其他***统计数据动态重选所述I/O核。
7.根据权利要求1所述的方法,其特征在于,所述编译还包括通过在所述I/O操作区域的开始和结尾处***注解所述I/O操作区域的开始和结尾的编译指示,在已编译的程序源代码中标记每个已识别I/O操作区域,所述执行包括将所述编译指示翻译为指示操作***(operating system,OS)调度器将所述I/O操作区域的执行移动到所述I/O核的***呼叫。
8.根据权利要求1所述的方法,其特征在于,根据所述程序源代码的所述I/O操作区域和其他区域的大小、所述I/O操作区域中的I/O请求的数量、以及所述程序源代码的所述I/O操作区域和其他区域的预计执行次数中的至少一个识别所述I/O操作区域。
9.根据权利要求1所述的方法,所述I/O操作区域包括与所述程序源代码中的其他区域相比更为密集的I/O操作。
10.一种执行输入/输出(Input/Output,I/O)和非I/O操作的多核计算***的方法,其特征在于,该方法包括:
在程序源代码的编译过程中,确认所述程序源代码的每个I/O操作区域;
将所述I/O操作区域从所述程序源代码中的其他区域中划分出来;
在已编译的程序源代码的执行过程中,调度所述I/O操作区域在预先选择的I/O核上进行执行;
调度所述已编译程序源代码的所述其他区域在非I/O核上进行执行。
11.根据权利要求10所述的方法,其特征在于,确认所述程序源代码的每个I/O操作区域包括:
计算I/O操作数量和在一个程序源代码中的语句数量的比率;
在确定所述比率超过设定阈值时,指定所述一个程序源代码为所述I/O操作区域。
12.根据权利要求10所述的方法,其特征在于,根据成本模型划分出所述I/O操作区域,所述成本模型指示所述程序源代码中的所述I/O操作和非I/O语句的平均运行时间成本,根据所述成本模型将所述I/O操作区域从所述程序源代码中的其他区域中划分出来满足核之间的负载均衡。
13.根据权利要求10所述的方法,其特征在于,还包括:在所述编译过程中,根据可用***资源,将所述程序源代码中连续的I/O操作区域或其他区域进行合并。
14.根据权利要求10所述的方法,其特征在于,还包括:在所述编译过程中,根据可用***资源,将所述程序源代码中的所述I/O操作区域或其他区域进行分离。
15.根据权利要求10所述的方法,其特征在于,所述划分包括:
在每个I/O操作区域中***编译指示进行执行,所述编译指示标记所述I/O操作区域;
在每个I/O操作区域中***指示I/O操作数量和预计运行时间周期数量给调度器执行的参数。
16.根据权利要求10所述的方法,其特征在于,调度所述I/O操作区域在预先选择的I/O核上进行执行包括创建I/O操作区域调度器以调度所述I/O操作区域。
17.一种执行输入/输出(Input/Output,I/O)和非I/O操作的多核计算机,其特征在于,所述多核计算机包括:
多个处理核;
用于存储至少一个处理器执行的编程的非瞬时性计算机可读存储介质,所述编程包括的指令用于:
指定多个处理核中的至少一部分为I/O核;
编译程序源代码,用于编译所述程序源代码的指令包括用于识别所述程序源代码的每个I/O操作区域的指令;
利用所述多个处理核执行所述程序源代码,用于执行所述程序源代码的指令包括用于在所述I/O核上调度所述I/O操作区域的指令。
18.根据权利要求17所述的多核计算机,其特征在于,用于指定多个处理核的至少一部分为I/O核包括的指令用于:
将所述多个处理核的至少一部分的中断控制器设置为忽略I/O中断;
在启动操作***(operating system,OS)时选择所述I/O核;
在为I/O设备加载驱动器时为所述I/O核开启中断处理程序。
19.根据权利要求17所述的多核计算机,用于识别所述程序源代码的每个I/O操作区域的指令包括的指令用于:
在所述I/O操作区域的开始和结尾处***注解所述I/O操作区域的开始和结尾的编译指示;
在所述I/O操作区域中***指示I/O操作数量和预计运行时间周期数量给调度器的参数。
20.根据权利要求17所述的多核计算机,用于执行所述程序源代码的指令包括的指令用于:
调用操作***(operating system,OS)调度器以执行所述处理核上的已编译源代码的调度;
创建I/O操作区域调度器以调度所述I/O核上的所述I/O操作区域。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/184,297 US9563585B2 (en) | 2014-02-19 | 2014-02-19 | System and method for isolating I/O execution via compiler and OS support |
US14/184,297 | 2014-02-19 | ||
PCT/CN2015/073243 WO2015124116A2 (en) | 2014-02-19 | 2015-02-24 | System and method for isolating i/o execution via compiler and os support |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106030538A CN106030538A (zh) | 2016-10-12 |
CN106030538B true CN106030538B (zh) | 2020-06-02 |
Family
ID=53798187
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580009706.7A Active CN106030538B (zh) | 2014-02-19 | 2015-02-24 | 通过编译器和os支持分离出i/o执行的***和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9563585B2 (zh) |
EP (1) | EP3092567B1 (zh) |
CN (1) | CN106030538B (zh) |
WO (1) | WO2015124116A2 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10198269B2 (en) | 2013-08-28 | 2019-02-05 | Via Technologies, Inc. | Dynamic reconfiguration of multi-core processor |
US9792112B2 (en) | 2013-08-28 | 2017-10-17 | Via Technologies, Inc. | Propagation of microcode patches to multiple cores in multicore microprocessor |
US9465432B2 (en) | 2013-08-28 | 2016-10-11 | Via Technologies, Inc. | Multi-core synchronization mechanism |
US9880953B2 (en) * | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
US9798582B2 (en) * | 2015-10-22 | 2017-10-24 | International Business Machines Corporation | Low latency scheduling on simultaneous multi-threading cores |
KR20170094911A (ko) * | 2016-02-12 | 2017-08-22 | 삼성전자주식회사 | 반도체 장치의 동작 방법 및 반도체 시스템 |
FR3057081B1 (fr) | 2016-10-05 | 2019-11-08 | Airbus Operations | Processeur comprenant une pluralite de coeurs de calcul |
US10649943B2 (en) | 2017-05-26 | 2020-05-12 | Dell Products, L.P. | System and method for I/O aware processor configuration |
US10642648B2 (en) * | 2017-08-24 | 2020-05-05 | Futurewei Technologies, Inc. | Auto-adaptive serverless function management |
JP7385343B2 (ja) * | 2017-11-08 | 2023-11-22 | コニカミノルタ株式会社 | 画像形成装置 |
US10613844B2 (en) | 2017-11-10 | 2020-04-07 | International Business Machines Corporation | Using comments of a program to provide optimizations |
CN110442345B (zh) * | 2019-06-21 | 2021-01-29 | 华为技术有限公司 | 一种编译方法、运行方法及设备 |
US11321123B2 (en) * | 2019-11-21 | 2022-05-03 | International Business Machines Corporation | Determining an optimum number of threads to make available per core in a multi-core processor complex to executive tasks |
CN111258731A (zh) * | 2020-01-13 | 2020-06-09 | 苏州浪潮智能科技有限公司 | 一种基于risc-v的多核程序调度***及方法 |
US11494236B2 (en) * | 2020-05-06 | 2022-11-08 | EMP IP Holding Company, LLC | System and method for sharing central processing unit (CPU) resources with unbalanced applications |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770401A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种建立多核运行环境的方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8914590B2 (en) * | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
US9170812B2 (en) * | 2002-03-21 | 2015-10-27 | Pact Xpp Technologies Ag | Data processing system having integrated pipelined array data processor |
US9038040B2 (en) * | 2006-01-25 | 2015-05-19 | International Business Machines Corporation | Method for partitioning programs between a general purpose core and one or more accelerators |
JP4784827B2 (ja) * | 2006-06-06 | 2011-10-05 | 学校法人早稲田大学 | ヘテロジニアスマルチプロセッサ向けグローバルコンパイラ |
US7941791B2 (en) * | 2007-04-13 | 2011-05-10 | Perry Wang | Programming environment for heterogeneous processor resource integration |
US20090248988A1 (en) | 2008-03-28 | 2009-10-01 | Mips Technologies, Inc. | Mechanism for maintaining consistency of data written by io devices |
US9152427B2 (en) * | 2008-10-15 | 2015-10-06 | Hyperion Core, Inc. | Instruction issue to array of arithmetic cells coupled to load/store cells with associated registers as extended register file |
US20100242014A1 (en) * | 2009-03-17 | 2010-09-23 | Xiaohan Zhu | Symmetric multi-processor operating system for asymmetric multi-processor architecture |
US9043769B2 (en) * | 2009-12-28 | 2015-05-26 | Hyperion Core Inc. | Optimization of loops and data flow sections in multi-core processor environment |
CN104169879B (zh) * | 2012-04-24 | 2019-01-04 | 英特尔公司 | 用于动态中断重新配置的方法和计算机*** |
US9134974B2 (en) * | 2012-11-12 | 2015-09-15 | Signalogic, Inc. | Source code separation and generation for heterogeneous central processing unit (CPU) computational devices |
US9876711B2 (en) | 2013-11-05 | 2018-01-23 | Cisco Technology, Inc. | Source address translation in overlay networks |
-
2014
- 2014-02-19 US US14/184,297 patent/US9563585B2/en active Active
-
2015
- 2015-02-24 EP EP15751860.6A patent/EP3092567B1/en active Active
- 2015-02-24 WO PCT/CN2015/073243 patent/WO2015124116A2/en active Application Filing
- 2015-02-24 CN CN201580009706.7A patent/CN106030538B/zh active Active
-
2016
- 2016-12-21 US US15/387,312 patent/US9772879B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101770401A (zh) * | 2008-12-30 | 2010-07-07 | 北京天融信网络安全技术有限公司 | 一种建立多核运行环境的方法 |
Also Published As
Publication number | Publication date |
---|---|
US9563585B2 (en) | 2017-02-07 |
US9772879B2 (en) | 2017-09-26 |
US20150234640A1 (en) | 2015-08-20 |
US20170102967A1 (en) | 2017-04-13 |
WO2015124116A2 (en) | 2015-08-27 |
WO2015124116A3 (en) | 2016-01-07 |
EP3092567A2 (en) | 2016-11-16 |
CN106030538A (zh) | 2016-10-12 |
EP3092567A4 (en) | 2017-05-31 |
EP3092567B1 (en) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106030538B (zh) | 通过编译器和os支持分离出i/o执行的***和方法 | |
CN106663021B (zh) | 虚拟化环境中的智能gpu调度 | |
KR101953906B1 (ko) | 태스크 스케줄링 방법 및 장치 | |
US20170185452A1 (en) | Apparatus and method for data processing | |
CN104094235B (zh) | 多线程计算 | |
KR20210011451A (ko) | 하드웨어 가속을 위한 하드웨어 리소스들의 임베디드 스케줄링 | |
US9201823B2 (en) | Pessimistic interrupt affinity for devices | |
CN103744716A (zh) | 一种基于当前vcpu调度状态的动态中断均衡映射方法 | |
US20190286479A1 (en) | Intelligent gpu scheduling in a virtualization environment | |
US9003094B2 (en) | Optimistic interrupt affinity for devices | |
KR20120055353A (ko) | 이종 멀티 프로세서 환경에서의 데이터 처리 최적화 장치 및 방법 | |
US11467946B1 (en) | Breakpoints in neural network accelerator | |
Lettieri et al. | A study of I/O performance of virtual machines | |
US11061840B2 (en) | Managing network interface controller-generated interrupts | |
US20150121392A1 (en) | Scheduling in job execution | |
Ng et al. | Paella: Low-latency model serving with software-defined gpu scheduling | |
CN110955503A (zh) | 任务调度方法及装置 | |
KR20130051076A (ko) | 응용프로그램 스케줄링 방법 및 장치 | |
Xue et al. | V10: Hardware-Assisted NPU Multi-tenancy for Improved Resource Utilization and Fairness | |
US8473662B2 (en) | Interrupt-handling-mode determining method of embedded operating system kernel | |
US9792152B2 (en) | Hypervisor managed scheduling of virtual machines | |
Labarta et al. | Hybrid Parallel Programming with MPI/StarSs | |
US20150293780A1 (en) | Method and System for Reconfigurable Virtual Single Processor Programming Model | |
Kabátová | Extending the user interface of irqbalance | |
EP3866007B1 (en) | Intelligent gpu scheduling in a virtualization environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |