System and method for isolating I/O execution via compiler and OS support

US9563585B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9563585-B2
Application numberUS-201414184297-A
CountryUS
Kind codeB2
Filing dateFeb 19, 2014
Priority dateFeb 19, 2014
Publication dateFeb 7, 2017
Grant dateFeb 7, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

Embodiments are provided for isolating Input/Output (I/O) execution by combining compiler and Operating System (OS) techniques. The embodiments include dedicating selected cores, in multicore or many-core processors, as I/O execution cores, and applying compiler-based analysis to classify I/O regions of program source codes so that the OS can schedule such regions onto the designated I/O cores. During the compilation of a program source code, each I/O operation region of the program source code is identified. During the execution of the compiled program source code, each I/O operation region is scheduled for execution on a preselected I/O core. The other regions of the compiled program source code are scheduled for execution on other cores.

First claim

Opening claim text (preview).

What is claimed is: 1. A method by a multiple-core computing system for executing Input/Output (I/O) and non-I/O operations, the method comprising: designating at least a portion of a plurality of processing cores as an I/O core; compiling a program source code, wherein the program source code comprises an I/O operation region of the program source code and other regions of the program source code, and wherein the compiling includes identifying the I/O operation region of the program source code, including: inserting pragmas in the I/O operation region for the execution, wherein the pragmas mark the I/O operation region, and inserting, in the I/O operation region, parameters indicating a number of I/O operations and a number of estimated runtime cycles to a scheduler for the execution; and executing the program source code using the plurality of processing cores, wherein the executing includes scheduling the I/O operation region only on the I/O core and not on a non-I/O core of the plurality of processing cores. 2. The method of claim 1 , wherein the designating includes: setting interrupt controllers of the plurality of processing cores to ignore I/O interrupts; selecting the I/O core upon booting an operating system (OS); and turning on an interrupt handler for the I/O core upon loading a driver for an I/O device. 3. The method of claim 2 , wherein turning on the interrupt handler for the I/O core includes configuring an interrupt request (IRQ) controller to unmask corresponding pins on the I/O core, and wherein unmasking the corresponding pins on the I/O core allows capturing the I/O interrupts by the I/O core. 4. The method of claim 2 , wherein turning on the interrupt handler for the I/O core includes configuring interrupt-raising memory operations at the I/O device with correct destination addresses. 5. The method of claim 1 , wherein designating at least the portion of the plurality of processing cores includes selecting a fixed number of cores of the plurality of processing cores or a percentage of core total capacity of the plurality of processing cores as the I/O core. 6. The method of claim 1 , further comprising reselecting the I/O core from the plurality of processing cores dynamically according to I/O workload, system throughput, or other system statistics. 7. The method of claim 1 , wherein the compiling further includes marking the I/O operation region in the compiled program source code by inserting, at a start and end of the I/O operation region, pragmas annotating the start and end of the I/O operation region, and wherein the executing includes translating the pragmas into system calls instructing an operating system (OS) scheduler to move the execution of the I/O operation region to the I/O core. 8. The method of claim 1 , wherein the I/O operation region is identified in accordance with at least one of: sizes of the I/O operation region and other regions of the program source code, a number of I/O requests in the I/O operation region, and estimated execution times of the I/O operation region and the other regions of the program source code. 9. The method of claim 1 , wherein the I/O operation region includes intensive I/O operations in comparison to other regions of the program source code. 10. A method by a multiple-core computing system for executing Input/Output (I/O) and non-I/O operations, the method comprising: during compilation of a program source code, recognizing an I/O operation region of the program source code; partitioning the I/O operation region from other regions of the program source code, including: inserting pragmas in the I/O operation region for the execution, wherein the pragmas mark the I/O operation region, and inserting, in the I/O operation region, parameters indicating a number of I/O operations and a number of estimated runtime cycles to a scheduler for the execution; during execution of the compiled program source code, scheduling the I/O operation region for execution only on a preselected I/O core and not on a non-I/O core, wherein a plurality of processing cores comprises the preselected I/O core and the non-I/O core; and scheduling the other regions of the compiled program source code for execution on the non-I/O core. 11. The method of claim 10 , wherein recognizing the I/O operation region of the program source code includes: calculating a ratio of a number of I/O operations to a number of statements in a piece of the program source code; and upon determining that the ratio is above a defined threshold, designating the piece of the program source code as the I/O operation region. 12. The method of claim 10 , wherein the I/O operation region is partitioned according to a cost model indicating an average runtime costs of the I/O operation and non-I/O statements of the program source code, and wherein partitioning the I/O operation region from the other regions of the program source code according to the cost mode satisfies load balance between the I/O core and the non-I/O core. 13. The method of claim 10 , further comprising, during the compilation, merging consecutive I/O operation regions or other regions of the program source code according to available system resources. 14. The method of claim 10 , further comprising, during the compilation, splitting the I/O operation region and the other regions of the program source code according to available system resources. 15. The method of claim 10 , wherein scheduling the I/O operation region for execution on the preselected I/O core includes creating an I/O operation region scheduler to schedule the I/O operation region. 16. A multiple-core computer for executing Input/Output (I/O) and non-I/O operations, the multiple-core computer comprising: a plurality of processing cores; and a non-transitory computer readable storage medium storing programming for execution by at least one processing core of the plurality of processing cores, the programming including instructions to: designate at least a portion of the plurality of processing cores as an I/O core; compile a program source code, wherein the program source code comprises an I/O operation region of the program source code and other regions of the program source code, and wherein the instructions to compile the program source code include instructions to identify an I/O operation region of the program source code, wherein the instructions to identify the I/O operation region of the program source code include instructions to: insert, at a start and end of the I/O operation region, pragmas annotating the start and end of the I/O operation region; and insert, in the I/O operation region, parameters indicating a number of I/O operations and a number of estimated runtime cycles to a scheduler; and execute the program source code using the plurality of processing cores, wherein the instructions to execute the program source code include instructions to schedule the I/O operation region only on the I/O core and not on a non-I/O core of the plurality of processing cores. 17. The multiple-core computer of claim 16 , wherein the instructions to designate at least the portion of the plurality of processing cores as the I/O core include instructions to: set interrupt controllers of the at least a portion of the plurality of processing cores to ignore I/O interrupts; select the I/O core upon booting an operating system (OS); and turn on an interrupt handler for the I/O core upon loading a driver for an I/O device. 18. The multiple-core computer of claim 16 , wherein the instructions t

Assignees

Inventors

Classifications

  • G06F13/24Primary

    using interrupt (G06F13/32 takes precedence) · CPC title

  • Compilation · CPC title

  • Code distribution (considering CPU load at run-time G06F9/505; load rebalancing G06F9/5083) · CPC title

  • Incremental compilation (software reuse G06F8/36) · CPC title

  • Energy efficient computing, e.g. low power processors, power management or thermal management · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9563585B2 cover?
Embodiments are provided for isolating Input/Output (I/O) execution by combining compiler and Operating System (OS) techniques. The embodiments include dedicating selected cores, in multicore or many-core processors, as I/O execution cores, and applying compiler-based analysis to classify I/O regions of program source codes so that the OS can schedule such regions onto the designated I/O cores.…
Who is the assignee on this patent?
Futurewei Technologies Inc
What technology area does this patent fall under?
Primary CPC classification G06F13/24. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 07 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).