CN105117269B - The optimization method of compiler based on vector interrupt - Google Patents
The optimization method of compiler based on vector interrupt Download PDFInfo
- Publication number
- CN105117269B CN105117269B CN201510647971.XA CN201510647971A CN105117269B CN 105117269 B CN105117269 B CN 105117269B CN 201510647971 A CN201510647971 A CN 201510647971A CN 105117269 B CN105117269 B CN 105117269B
- Authority
- CN
- China
- Prior art keywords
- register
- interrupt
- function
- compiler
- service function
- 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
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
The present invention provides the optimization methods of the compiler based on vector interrupt, include the following steps:The definition to vectorial interrupt function is completed by pre-processing instruction;Compiler identifies vector interrupt function in the precompile stage, analyzes the service condition of general register in interrupt function;Determine the sequence that the general register for needing to preserve and general register preserve;Determine the interrupt spot for needing to preserve, especially specified register;According to the order restoring register of save register, interrupt spot is restored;Service function is interrupted to return.Interrupt spot is stored in interrupt in service function and carry out by the present invention, in view of interrupting the situation for the general register that service function uses, reduce load/store operations, simplify flow, reduce to jump to and interrupts service function and be related to skip operation twice from service function return is interrupted, to accelerate interrupt function execution efficiency, the speed of processor interrupt response is improved.
Description
Technical field
The invention belongs to Compiler Optimization field, more particularly, to a kind of optimization of the compiler based on vector interrupt
Method.
Background technology
Compiler is a kind of computer program, the source code (original language) that it will be write as with certain high-level programming language, conversion
At another programming language (object language).Compiler is divided into leading portion, middle-end and rear end from structure, and front end is mainly morphology
Analysis, syntactic analysis phase, the assignment tree that front end generates are supplied to middle-end as input as input, and middle-end includes intermediate generation
Code generates and optimization intermediate code, and the intermediate code that middle-end generates is supplied to rear end as input, rear end will be intermediate as output
Code compilation is at assembly code.
Interruption is the most common mode of processor response peripheral hardware request.Processor response is interrupted, and is substantially in execution
Disconnected service function, the program executed when needing to continue to interrupt after interrupting due to processor response, just looks like that interruption does not have
Have and occurred equally, needs to preserve interrupt spot before service function so processor breaks in commission, break services in commission
Interrupt spot is restored after function.
Vector interrupt, external interrupt control device are underway disconnected by an independent data/address bus for being connected to processor
Inform that processor interrupts the address of service function while request.
The general flow of interrupt response is:
(1) enter and interrupt
(2) interrupt spot is preserved
(3) interruption service function is jumped to
(4) it executes and interrupts service function
(5) it is returned from interruption service function
(6) interrupt spot is restored
(7) interrupt spot is returned to
Here it " preserves interrupt spot ", preserves the register of all software-accessibles, be related to a large amount of store operations, " reduction
Interrupt spot " restores the register of all software-accessibles, is related to a large amount of load operations, there is no in view of interrupting clothes here
Whether used in business function;" jump to and interrupt service function " and " being returned from service function is interrupted " is related to skip operation twice.
It more crucially executes when interrupting service function, as function, register progress that needs that compiler can be used preserve
It preserves, this point is to repeat to preserve operation with " preserving interrupt spot ", and the general flow of interrupt response is unable to fully embody in vector
Disconnected advantage.
Invention content
In view of this, the invention is directed to a kind of optimization method of the compiler based on vector interrupt, to realize
It simplifies and preserves load involved in interrupt spot, reduction interrupt spot process, store number while interrupting simplification in flow
Reduce the number redirected, to improve the speed of processor interrupt response.
In order to achieve the above objectives, the technical solution of the invention is realized in:
The optimization method of compiler based on vector interrupt, includes the following steps:
(1) definition to vectorial interrupt function is completed by pre-processing instruction;
(2) compiler identifies vector interrupt function in the precompile stage, analyzes the use of general register in interrupt function
Situation;
(3) determine that the general register for needing to preserve and general register preserve according to processor type and programming model
Sequence;It preserves general register and follows following principle:
(a1) parameter register is used for Transfer Parameters when function call and uses, determined and deposited according to compiler analysis result
Whether device preserves, and register preserves out-of-order requirement, and register preserves corresponding with reduction sequence;
(a2) fixed register, determines whether register preserves according to compiler analysis result, and register preserves out-of-order
It is required that register preservation is corresponding with reduction sequence;
(a3) register that may span across function is called according to register as defined in the complicated degree of function and programming model the inside
Sequentially, compiler selection needs the register for preserving and restoring, and register preserves and the sequence of reduction corresponds to;
(4) interrupt spot for needing to preserve is determined according to the content of processor type, programming model and interruption service function,
Especially specified register;
(5) according to the order restoring register of save register, interrupt spot is restored;
(6) it interrupts service function to return, while being also that interrupt spot returns.
Further, keyword definition vector interrupt function is used in the step (1), is parsed convenient for compiler front-end,
The keyword includes #pragma, _ _ attribute__.
Further, in the step (2), compiler front-end is known in the precompile stage by morphological analysis, syntactic analysis
Other vector interrupt function, the subsequent register assigning process of information guiding obtained by precompile;If interrupting service function
It using these registers, is preserved when interrupt spot preserves, otherwise need not be preserved.
Further, compiler refers to the compiling of instruction for interrupting service function ending to interrupt to return in the step (6)
It enables.
Further, the step (3), step (4) analysis are interrupted in service function, are analyzed its subfunction,
The principle of analysis is as follows:
(b1) compiler, which needs to analyze, interrupts register service condition in service function and its subfunction, until the letter of analysis
Until number is there is no subfunction;
(b2) for interrupting service function and its subfunction, analyze parameter general register, fixed general register with
And the specified register that high-level language can influence;
(b3) service condition that only may span across the register of function in analysis interruption service function, interrupts the son of service function
The service condition that analysis may span across the register of function is not had in function;
(b4) specified register specified when interrupt function defines needs to preserve
Compared with the existing technology, the optimization method of the compiler based on vector interrupt described in the invention has following
Advantage:Interrupt spot is stored in interrupt in service function and carry out by the present invention, it is contemplated that interrupt that service function uses general posts
The situation of storage reduces load/store operations, simplifies flow, reduces to jump to and interrupts service function and taken from interrupting
Business function return is related to skip operation twice, to accelerate interrupt function execution efficiency, improves the speed of processor interrupt response
Degree.
Description of the drawings
The attached drawing for constituting the part of the invention is used for providing further understanding the invention, present invention wound
The illustrative embodiments and their description made do not constitute the improper restriction to the invention for explaining the invention.
In attached drawing:
Fig. 1 is example processor programming model register example;
Fig. 2 is compiler to interrupting service function register analysis process figure;
Dwell vessel original state table when Fig. 3 is analysis register service condition;
Fig. 4 is to analyze the buffer status table used when register service condition;
Fig. 5 is the assembler schematic diagram for compiling out using conventional compiler interrupt service routine for example 1;
Fig. 6 is the assembler schematic diagram for compiling out using the compiler interrupt service routine of optimization for example 1;
Fig. 7 is the assembler schematic diagram for compiling out using conventional compiler interrupt service routine for example 2;
Fig. 8 is the assembler schematic diagram for compiling out using the compiler interrupt service routine of optimization for example 2.
Specific implementation mode
It should be noted that in the absence of conflict, the feature in embodiment and embodiment in the invention can
To be combined with each other.
The present invention will be described in detail below with reference to the accompanying drawings and embodiments creates.
Processor programming model register as described in Figure 1, if processor does not have the mechanism that hardware preserves interrupt spot, base
It is as follows in the Compiler Optimization method specific implementation mode of interruption:
In commission when disconnected service function, the problem of whether preservation to register according to compiler, register can be divided into
Three classes:
(1) all general registers, compiler interrupt register in service function according to analysis and distribute, it is known that interrupt service
The general register that the general register and needs used in function preserves.
(2) specified register that high-level language can influence, compiler interrupt the instruction in service function according to analysis, it is known that
Interrupt which specified register service function can influence, such as condition register (cr) can then be influenced if there is conditional order
The value of condition register.
(3) there was only the specified register that assembler language operates, that is, programmer can be to these in interrupting service function
Specified register is operated by compiled form.In this way, compiler, which is not known, interrupts whether service function can influence these registers,
And programmer will be appreciated which specified register whether interrupt service function can influence, and therefore, defined by pre-processing instruction
When interrupting service function, it should provide control interface, such register such as status register (msr), place for such register
Manage device control register (ccr).
Step (1):The definition to vectorial interrupt function by pre-processing instruction completion is needed, it is fixed that following form may be used
Adopted vector interrupt function:
__attribute__((interrupt(“msr”)))void ISR(void);
ISR is vector interrupt service function, and can use state register (msr) in interrupting service function.
Step (2):Compiler identifies vector interrupt function in the precompile stage, analyzes general register in interrupt function
Service condition.
Step (3):Compiler determines the general register for needing to preserve and general according to processor type and programming model
The sequence that register preserves.It preserves general register and follows following principle:
(a1) parameter register is used for Transfer Parameters when function call and uses, determined and deposited according to compiler analysis result
Whether device preserves, and register preserves out-of-order requirement, and register preserves corresponding with reduction sequence;
(a2) fixed register, determines whether register preserves according to compiler analysis result, and register preserves out-of-order
It is required that register preservation is corresponding with reduction sequence;
(a3) register that may span across function is called according to register as defined in the complicated degree of function and programming model the inside
Sequentially, compiler selection needs the register for preserving and restoring, and register preserves and the sequence of reduction corresponds to.
Step (4):According to processor type, it is special that programming model and the content for interrupting service function determine that needs preserve
Register.
Method detailed that compiler analyzes register as shown in Fig. 2, in the process, compiler need to subfunction into
Row analysis:
(b1) compiler, which needs to analyze, interrupts register service condition in service function and its subfunction, until the letter of analysis
Until number is there is no subfunction.
(b2) for interrupting service function and its subfunction, analyze parameter general register, fixed general register with
And the specified register that high-level language can influence.
(b3) it only may span across the service condition of the register of function in analysis interruption service function, do not have to analysis in subfunction
It may span across the service condition of the register of function.
(b4) specified register specified when interrupt function defines needs to preserve
Between register analysis, dwell vessel original state as shown in Figure 3 is " N ".By interrupting service function and subfunction
After analysis, once finding that some register needs to preserve, then remembers " S " (store) in one field mark of Fig. 4 states, otherwise keep initial
State " N " is constant, finally to the end of all Functional Analysis after, need to be S " by all labels in interrupt service function
Register is preserved.
Step (5):According to the order restoring register of save register, interrupt spot is restored;
After function normal function, before returning to interrupt spot, the register of all preservations is restored in sequence,
" S " in corresponding one column of state of the register of reduction is replaced with " N " simultaneously.
Step (6):It interrupts service function to return, while being also that interrupt spot returns.
Example 1:It is sky to interrupt service function, compares the method with the Compiler Optimization of optimization compared to traditional compiler
The advantages of traditional method.
First, as shown in figure 5, describing to interrupt the program of execution according to the general flow of interruption, here, " ldu ", table
Show the instruction taken out data from memory and update stack pointer;" stu " indicates deposit data to memory and updates the finger of stack pointer
It enables;" bl " indicates the instruction of the skip operation with link register;" rfi " indicates the instruction back to interrupt spot;“jump”
Indicate jump instruction.
Here generic compiler is only possible to arbitrary function to preserve " may span across function register ", so must be added to use
" preserving interrupt spot " of implementation by assembly, " redirect and interrupt service function ", " reduction interrupt spot ", " returning to interrupt spot ".
The program executed is interrupted according to the flow description after Compiler Optimization and interrupts the program executed, if according to as follows
Mode defines interruption service function:
__attribute__((interrupt(“msr”))void isr(void);
As shown in figure 5, programmer informs that " msr " (its can be used by interrupting service function when due to definition interruption service function
Real interruption service function does not use), so there is the operation for preserving and restoring " msr " in the assembler of compiling out.
Comparing Fig. 5, Fig. 6 and can be seen that can be reduced (1+2+4+10) secondary " store " using the compiler of optimization, including 1
Secondary specified register relevant operation, No. 2 general register relevant operations, 4 subparameter register relevant operations, 10 Cross functions
Register relevant operation;(1+2+4+10) secondary " load ", 1 specified register relevant operation, No. 2 general register correlation behaviour
Work, 4 subparameter register relevant operations, 10 Cross function register relevant operations reduce by 2 skip operations.
Example 2:It interrupts service function and calls subfunction, compare the method with the Compiler Optimization of optimization compared to traditional
The advantages of compiler traditional method.
Service function non-empty is interrupted, needs to use " register of Cross function " in interrupt function, and interrupt service function
There are subfunctions.Service function is interrupted in definition as follows:
__attribute__((interrupt())void isr(void);
Compare Fig. 7, Fig. 8 can be seen that can reduce (2+1+2+10) secondary " store ", 2 spies using the compiler of optimization
Different register relevant operation, No. 1 general register relevant operation, 2 subparameter register relevant operations, 10 Cross function deposits
Device relevant operation;(2+1+2+10) secondary " load ", 2 specified register relevant operations, No. 1 general register relevant operation, 2 times
Parameter register relevant operation, 10 Cross function register relevant operations reduce by 2 skip operations.
The foregoing is merely the preferred embodiments of the invention, are not intended to limit the invention creation, all at this
Within the spirit and principle of innovation and creation, any modification, equivalent replacement, improvement and so on should be included in the invention
Protection domain within.
Claims (5)
1. the optimization method of the compiler based on vector interrupt, it is characterised in that:Include the following steps:
(1) definition to vectorial interrupt function is completed by pre-processing instruction;
(2) compiler identifies vector interrupt function in the precompile stage, analyzes the service condition of general register in interrupt function;
(3) general register and general register preserved according to processor type and programming model determination needs preserves suitable
Sequence;
Wherein, it preserves general register and follows following principle:
(a1) parameter register is used for Transfer Parameters when function call and uses, determines that register is according to compiler analysis result
No preservation, register preserve out-of-order requirement, and register preserves corresponding with reduction sequence;
(a2) fixed register, determines whether register preserves according to compiler analysis result, and register preserves out-of-order requirement,
Register preserves corresponding with reduction sequence;
(a3) register that may span across function calls suitable according to register as defined in the complicated degree of function and programming model the inside
Sequence, compiler selection need the register for preserving and restoring, and register preserves and the sequence of reduction corresponds to;
(4) interrupt spot for needing to preserve is determined according to the content of processor type, programming model and interruption service function;
(5) according to the order restoring register of save register, interrupt spot is restored;
(6) it interrupts service function to return, while being also that interrupt spot returns.
2. the optimization method of the compiler according to claim 1 based on vector interrupt, it is characterised in that:The step
(1) in use keyword definition vector interrupt function, convenient for compiler front-end parse, the keyword include #pragma, _ _
attribute__。
3. the optimization method of the compiler according to claim 1 based on vector interrupt, it is characterised in that:The step
(2) in, compiler front-end identifies vector interrupt function in the precompile stage by morphological analysis, syntactic analysis, passes through precompile
The obtained subsequent register assigning process of information guiding;If interrupting service function uses these registers, in interrupt spot
It is preserved when preservation, otherwise need not be preserved.
4. the optimization method of the compiler according to claim 1 based on vector interrupt, it is characterised in that:The step
(6) compiling of instruction for interrupting service function ending is interrupt return instruction by compiler in.
5. the optimization method of the compiler according to claim 1 based on vector interrupt, it is characterised in that:The step
(3), step (4) analysis is interrupted in service function, is analyzed its subfunction, the principle of analysis is as follows:
(b1) compiler, which needs to analyze, interrupts register service condition in service function and its subfunction, until analysis function not
Until having subfunction again;
(b2) for interrupting service function and its subfunction, parameter general register, fixed general register and height are analyzed
The specified register that grade language can influence;
(b3) service condition that only may span across the register of function in analysis interruption service function, interrupts the subfunction of service function
In do not have to analysis may span across function register service condition;
(b4) specified register specified when interrupt function defines needs to preserve.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510647971.XA CN105117269B (en) | 2015-10-09 | 2015-10-09 | The optimization method of compiler based on vector interrupt |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510647971.XA CN105117269B (en) | 2015-10-09 | 2015-10-09 | The optimization method of compiler based on vector interrupt |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105117269A CN105117269A (en) | 2015-12-02 |
CN105117269B true CN105117269B (en) | 2018-07-24 |
Family
ID=54665270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510647971.XA Active CN105117269B (en) | 2015-10-09 | 2015-10-09 | The optimization method of compiler based on vector interrupt |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105117269B (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101936565B1 (en) * | 2016-11-14 | 2019-01-09 | 엘에스산전 주식회사 | Method for controlling interrupt in inverter |
CN112395065B (en) * | 2020-11-26 | 2024-09-13 | 湖北开特汽车电子电器系统股份有限公司 | Interrupt service method and device for starting loading of embedded system |
CN114489801A (en) * | 2022-02-11 | 2022-05-13 | 广州翼辉信息技术有限公司 | Method, system and medium for measuring interrupt duration of embedded system with high precision |
CN117171053B (en) * | 2023-11-01 | 2024-02-20 | 睿思芯科(深圳)技术有限公司 | Test method, system and related equipment for vectorized programming |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1223402A (en) * | 1998-01-12 | 1999-07-21 | 日本电气株式会社 | Compiler capable of reducing interrupt handling in optimization and its optimization method |
US6634023B1 (en) * | 1998-06-18 | 2003-10-14 | International Business Machines Corporation | Compile method, exception handling method and computer |
CN101488100A (en) * | 2008-01-15 | 2009-07-22 | 上海海尔集成电路有限公司 | Interruption system implementing method and device |
-
2015
- 2015-10-09 CN CN201510647971.XA patent/CN105117269B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1223402A (en) * | 1998-01-12 | 1999-07-21 | 日本电气株式会社 | Compiler capable of reducing interrupt handling in optimization and its optimization method |
US6634023B1 (en) * | 1998-06-18 | 2003-10-14 | International Business Machines Corporation | Compile method, exception handling method and computer |
CN101488100A (en) * | 2008-01-15 | 2009-07-22 | 上海海尔集成电路有限公司 | Interruption system implementing method and device |
Non-Patent Citations (2)
Title |
---|
基于ARM9内核的IRQ异常中断编程机制的研究;姚宏昕等;《计算机工程与设计》;20091231;第30卷(第12期);2848-2851 * |
嵌入式操作系统中断现场保护的优化策略;钱贾敏等;《微计算机信息》;20041130;第20卷(第11期);83-84 * |
Also Published As
Publication number | Publication date |
---|---|
CN105117269A (en) | 2015-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103348323B (en) | Method and system for performance objective program in computer systems | |
CN103858099B (en) | The method and system applied for execution, the circuit with machine instruction | |
CN105117269B (en) | The optimization method of compiler based on vector interrupt | |
US6973644B2 (en) | Program interpreter | |
CN102360334B (en) | Dynamic and static combined software security test method | |
US7873948B2 (en) | Method and system for split-compiling a hybrid language program | |
US9672133B2 (en) | Systems and methods for debugging applications using dual code generation | |
US20150268940A1 (en) | Automatic loop vectorization using hardware transactional memory | |
Fisher | Control structures for programming languages | |
US7827542B2 (en) | Compiler apparatus | |
US8341613B2 (en) | Reducing stack space consumption via head-call optimization | |
US5854933A (en) | Method for optimizing a computer program by moving certain load and store instructions out of a loop | |
CN110865814B (en) | Compiler implementation method and system supporting heterogeneous computing core architecture | |
CN109829313A (en) | A kind of method and device programming defence SGX side-channel attack based on code reuse | |
Lakshminarayana et al. | Incorporating speculative execution into scheduling of control-flow-intensive designs | |
US20130086565A1 (en) | Low-level function selection using vector-width | |
CN115809063A (en) | Storage process compiling method, system, electronic equipment and storage medium | |
JP2006196002A (en) | Software tool including modeling of asynchronous program flow | |
Owe | Verifiable Programming of Object-Oriented and Distributed Systems. | |
CN104750533A (en) | C program compiling method and C program compiler | |
US11204767B2 (en) | Context switching locations for compiler-assisted context switching | |
US11429358B2 (en) | Representing asynchronous state machine in intermediate code | |
EP3906470B1 (en) | Techniques for scheduling instructions in compiling source code | |
Dantas et al. | Towards aspect-oriented programming for context-aware systems: A comparative study | |
CN102360306A (en) | Method for extracting and optimizing information of cyclic data flow charts in high-level language codes |
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 |