WO2006022204A1 - ソースプログラムの分析装置および方法 - Google Patents

ソースプログラムの分析装置および方法 Download PDF

Info

Publication number
WO2006022204A1
WO2006022204A1 PCT/JP2005/015158 JP2005015158W WO2006022204A1 WO 2006022204 A1 WO2006022204 A1 WO 2006022204A1 JP 2005015158 W JP2005015158 W JP 2005015158W WO 2006022204 A1 WO2006022204 A1 WO 2006022204A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
block
code
information
memory address
Prior art date
Application number
PCT/JP2005/015158
Other languages
English (en)
French (fr)
Inventor
Shintaro Shimogori
Original Assignee
Pacific Design Inc.
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Pacific Design Inc. filed Critical Pacific Design Inc.
Priority to JP2006531879A priority Critical patent/JP4866241B2/ja
Priority to US11/573,777 priority patent/US20080288923A1/en
Priority to EP05772688A priority patent/EP1788485A4/en
Publication of WO2006022204A1 publication Critical patent/WO2006022204A1/ja

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/323Visualisation of programs or trace data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Definitions

  • the present invention relates to a device design for executing processing described by a source program and an analysis apparatus and method for supporting the design.
  • JP 2003-216678A makes a specific process or program function in the program a dedicated circuit to operate the program efficiently. It is disclosed.
  • a cycle-based instruction level simulator hereinafter referred to as ISS
  • ISS cycle-based instruction level simulator
  • One embodiment of the present invention is a system that supports device design, and includes a compiler, a simulator, and an apparatus for analyzing a source program based on information obtained from the compiler and simulator power.
  • the compiler compiles a source program including a plurality of source statements to generate object code, and also generates debug information.
  • the debug information includes each source statement and Z or an intermediate list obtained by translating each source statement into an intermediate language, the code memory address of the instruction in which the intermediate list is encoded, and the variables of the variables accessed by the instruction. Contains debug information associated with a memory address. Code memory address and variable Memory address indicates the address in the execution memory when the object code is executed
  • the simulator is a cycle-based simulator, and generates memory access information by running an object code.
  • the memory access information includes a code memory address, a variable memory address, and an access type that are accessed in units of cycles.
  • the analysis device associates a block ID for grouping a part of a plurality of source statements or a part of an intermediate list as a processing block with a code memory address of each instruction based on debug information. And a graphic display function for displaying the status of access to the execution memory when the source program is executed based on the memory access information on the display device as the cycle progresses.
  • the access status includes a variable memory address and an access type.
  • the access status may include a code memory address.
  • the access status is displayed differently depending on the block ID associated with the code memory address of each instruction. One form is to display the access status in different colors depending on the block ID.
  • the analysis apparatus stores the block ID in the memory in association with the code memory address of each instruction.
  • the access status includes the code memory address and variable memory address, and is associated with the processing block to which each instruction belongs via the code memory address and block ID. Therefore, the graphic display function can display the access status that changes with the elapse of the cycle (cycle time) so that it can be identified by the unit of the processing block including the instruction performing the access.
  • the analyzer then changes the block ID for the code memory address of each instruction by changing the data stored in memory to associate the block ID with the source statement or intermediate list. . Therefore, based on the source program or intermediate list, the configuration of multiple processing blocks in the program can be changed easily and flexibly.
  • the configuration of multiple processing blocks for dividing a source program can be changed by simply selecting a part of a source statement or a part of an intermediate level displayed on a display device.
  • An analyzer that can change processing blocks at the source level or intermediate language level has the ability to display at least part of multiple source statements or at least part of an intermediate list on a display device, and multiple specified on the display device.
  • the configuration of the processing block of the program can be changed by designating the code memory address displayed as the access status.
  • the rearranged processing blocks can be displayed at the source program level or intermediate language level. Regardless of the method used to change the specification of multiple processing blocks, there is no need to re-execute the simulation at the stage of changing the program processing block configuration. Access status can be displayed by block.
  • Another embodiment of the present invention is a program for executing, by a computer, a process of analyzing a source program having a plurality of source statements using debug information and memory access information. Or it is a program product.
  • This analysis process is a function that stores block IDs for grouping parts of multiple source statements or intermediate lists as processing blocks in memory in association with code memory addresses based on debug information ( Process) and the access status to the execution memory including the code memory address, variable memory address, and access type when the source program is executed based on the memory access information.
  • Debug information Process
  • This program can be provided by being recorded on an appropriate recording medium, and by installing it in a computer, the computer can function as an analyzer.
  • This analyzer is easy to change the configuration for dividing the source program into a plurality of processing blocks, and is executed in units of processing blocks for various processing block configurations without re-running the simulation.
  • the access status to the memory can be displayed.
  • the analysis apparatus can analyze the access status to the execution memory in units of processing blocks with respect to the configuration of the designated processing block, using the CPU or other appropriate arithmetic function as a memory access analysis means.
  • the direction of data transfer via the execution memory between the paired processing blocks is determined based on the memory access information and the block ID associated with the code memory address of each instruction.
  • the first decision function shown is useful for judging the possibility of pipeline processing between blocks. If the processing block configuration in the source program is changed and the data transfer direction between the paired processing blocks is one direction, the paired processing blocks can be executed in parallel in a pipeline manner.
  • processing blocks that can be executed in parallel by the no-line method by displaying the amount and direction of data transfer via the execution memory between them in a matrix on the display device Can be easily specified.
  • the source statement or intermediate list corresponding to the data transfer can be displayed on the display device.
  • One aspect of the present invention is a method for analyzing a source program having a plurality of source statements using debug information and memory access information, and includes the following steps.
  • the memory access analysis means determines the direction of data transfer through the execution memory between the paired processing blocks.
  • the first processing for the same area of the execution memory is performed based on the memory access information and the block ID associated with the code memory address of each instruction for the configuration of the designated processing block.
  • the second judgment function that obtains the reference relationship between the block and the second processing block is also useful. If the reference relationship is obtained, the range can be determined if accesses to the same area of the execution memory do not overlap or reverse. If the range does not overlap or reverse, the range can allow access to other processing blocks. Under such conditions, the first processing block and the second processing block can be executed in parallel, and the result of virtually executing the first processing block and the second processing block in parallel can be shown. it can.
  • the execution memory when executed in parallel with the first processing block and the second processing block It is possible to calculate the bandwidth required for access. In order to determine the bandwidth between one specified processing block and other processing blocks, it is effective to provide a function to display the relationship between bandwidth and side by graph. It is also effective to provide a function or process for setting pipeline operation conditions for multiple processing blocks such as available bandwidth.
  • Another embodiment of the present invention relates to a pipeline operation and analyzes a source program. And has the following steps.
  • bl Assigns a block ID to group part of multiple source statements or part of intermediate list as processing block to part of multiple source statements or part of intermediate list. Based on the debug information, the block ID is stored in the memory in association with the code memory address of each instruction.
  • the first processing block and the second processing block for the same area of the execution memory are performed by the memory access analysis means. This indicates the possibility of executing the first processing block and the second processing block in parallel by obtaining the reference relationship.
  • the program itself is independent of the possibility of executing by a pipeline method of a plurality of processing blocks, and further executing the program at a higher degree of parallelism than a simple pipeline method. Can be judged without dividing and simulating. As a result, pipeline processing and parallel execution are possible, and the configuration of multiple processing blocks suitable for it, the amount of data transfer required for parallel execution, and the bandwidth are found.
  • the processing described by the source program is divided into a plurality of block areas (processing blocks), which can be executed by individual hardware at an appropriate timing. Design devices that execute processing described by source programs in the operating environment.
  • FIG. 1 shows an outline of a support system including an analysis apparatus.
  • FIG. 2 shows an outline of debug information, memory access information, and block information.
  • FIG. 3 shows an outline of setting a processing block for a description of a source program.
  • Figure 4 shows an example of the memory access status.
  • FIG. 5 illustrates data transfer between processing blocks.
  • Fig. 6 shows a matrix display example of data transfer.
  • Figure 7 shows an example of displaying the matrix statement with backtracking source statements.
  • FIG. 8 shows an example of a memory access reference relationship.
  • FIG. 9 shows an example of a memory access reference relationship when processing blocks are executed in parallel.
  • FIG. 10 shows another example of the memory access reference relationship when processing blocks are executed in parallel.
  • FIG. 11 is a display example showing a memory access reference relationship including a bandwidth.
  • FIG. 12 is a flowchart showing an outline of an analysis method.
  • FIG. 13 shows the execution status of a plurality of processing blocks.
  • FIG. 14 shows an example in which a plurality of processing blocks are executed in a pipeline manner.
  • FIG. 15 shows an example in which a plurality of processing blocks are executed with an increased degree of parallelism.
  • FIG. 1 shows an overview of a support system 5 that analyzes a source program 50 to support a design for implementing the processing described by the source program 50 on a device, for example, a semiconductor device.
  • the analysis target software (source program) 50 is an image processing application including processing for compressing and decompressing images using, for example, the MPEG4 protocol.
  • the support system 5 includes the compiler 1 that compiles the source program 50 that is the target of analysis or analysis, and the compiled object code 51, thereby including access status and cycle information for the memory at the time of execution.
  • a cycle-based instruction level simulator (ISS) 2 that generates memory access information 53 is provided.
  • the compiler 1 generates debug information 52 together with the object code 51.
  • the debug information 52 is generated by a source statement included in the source program 50, for example, a C statement written in C language, an address on the memory of the instruction that encoded the statement (code memory address), and the instruction. Contains binding information indicating the association of the accessed variable with the memory address (variable memory address).
  • the support system 5 includes an analysis device 55 that analyzes the source program 50 from the aspect of access to the memory by using the debug information 52 and the memory access information 53.
  • the compiler 1, the ISS2, and the analysis device 55 may be devices equipped with dedicated hardware. In many cases, a computer having appropriate hardware resources such as an input / output device, a storage device, and a CPU is provided as software for causing the compiler 1, the ISS2, and the analysis device 55 to function. Therefore, when the support system 5 is realized by a single computer or a plurality of computers connected by a network, the debug information 52 and the memory access information 53 that are input to the analyzer 55 are stored in the hard disk included in the system 5.
  • the data is supplied to the analysis device 55 via an appropriate recording medium such as a computer or via an appropriate transmission path such as a computer network.
  • the debug information 52 is described as including information necessary for analysis among the information included in the source program 50 and the object code 51 in addition to the combined information. It is possible to reduce the amount of information of the debug information 52 by supplying the source program 50 and the Z or object code 51 to the analyzer 55 together with the debug information 52.
  • the analysis device 55 generates block information 54 for specifying a block area in the source program 50 when analyzing the operation result of the source program 50 that is the target software.
  • the block area includes one or more C statements included in the source program 50.
  • One or a group of processes consisting of statements grouped or divided by the block area is handled as one unit or block that cannot be separated when the operation of the source program 50 is analyzed in the analyzer 55. Therefore, hereinafter, the source program 50 is divided and a group of a plurality of C statements included in the source program 50 is referred to as a processing block.
  • a unique block ID is assigned to each processing block, thereby dividing the processing block.
  • the analysis device 55 is realized by a computer 3 having appropriate hardware resources.
  • the computer 3 has a calculation function and realizes a plurality of functions described below.
  • an input / output interface 8 and an input / output device 6 for displaying data via the input / output interface 8 and inputting data are provided.
  • the analyzer 55 employs a GUI (Graphical User Interface) 8 so that the operation of the source program 50 can be visually grasped, and the input / output device 6 has a function as a display device for graphic display. ing.
  • the hardware resources provided in the computer 3 are not limited to these.
  • FIG. 2 shows an outline of debug information, memory access information, and block information.
  • Debug information 52 is C source statement (C statement) 21 included in source program 50 as source information, function definition 22 included in source program 50, and source statement 21 is converted to an intermediate language, in this example assembler Assembler list 23.
  • the debug information 52 includes, as object information, a memory address (code memory address) 25 of an instruction (code) in which the assembler list 23 is coded, and a memory address (variable memory) of a variable accessed by the instruction. Address) 26.
  • the debug information 52 includes combined information 29 indicating the relationship between the object information and the source information in order to feed back from the object information to the source information when debugging.
  • the code memory address 25 and the variable memory address 26 are memory (execution memory) addresses when the object code 51 is mounted on the semiconductor device 90 and the processing of the source program 50 is executed.
  • FIG. 2 shows, as a reference, a device 90 of a nodal bird architecture type including a processor 91, a code memory 92 for providing code to the processor 91, and a data memory 93 for storing data.
  • the memory access information 53 is created by running the object code 51 by the cycle-based ISS2, and records the memory access state in units of cycles for the memories 92 and 93 for execution in the device 90. .
  • the memory access information 53 includes the site information 31, the code memory address 25 of the instruction that instructs the processing of the cycle, the accessed variable memory address 26, and the information 27 indicating the operation type (access type). Yes. Access type 27, for example, writes to or reads from variable (memory) 93. It is recorded that the movement was performed.
  • the object code 51 is sequentially executed in the order in which the instruction codes are arranged, and parallel execution is not considered. For this reason, one code memory address 25 corresponds to the cycle time stored in the cycle information 31.
  • the memory access information 53 Since the memory access information 53 is recorded in each cycle, the memory access information 53 becomes a huge amount. Therefore, it is desirable that the memory access information 53 is compressed and held and supplied to the analyzer 55.
  • There are various methods for compressing data For the power cycle information 31, a retention method based on a relative value that continuously has a combination of a bit length and an incremental value is effective.
  • the dictionary method For code memory address 25 and variable memory address 26, the dictionary method is effective. Therefore, the memory access information 53 holds a dictionary value corresponding to the memory address value, and a memory address dictionary for decoding is supplied to the analyzer 55 independently of the memory access information 53.
  • the block information 54 includes a code memory address 25 and a block ID 35.
  • the debug information 52 is associated with the block ID 35 via the code memory address 25 and belongs to the processing block identified by the source information block ID 35 including the C statement 21 and the assembler 'list 23. Prove.
  • the memory access information 53 is also associated with the block ID 35 via the code memory address 25, and it becomes clear to which of the processing blocks the memory access in a certain cycle is identified by the block ID 35. Furthermore, by specifying memory accesses in a certain cycle, it is possible to display the C statement 21 of the processing block that performs the series of memory accesses.
  • FIG. 3 shows a state in which a block area is designated on the source program and a processing block is set.
  • a source program 50 including a plurality of C source statements 21 can be grouped from various viewpoints such as a difference in input / output variables, a difference in input or output, and loop processing. From the point of view of memory access, loop processing including processing to input / output variables has a large amount of access, so it is effective to group the loop processing as one block. For example, in the source program 50 shown in FIG. 3, loop processing including writing to and reading from the memory respectively. Can be configured as two blocks 10 and 11.
  • the source program 50 is converted into an assembler that is an intermediate language, and an intermediate file 59 is generated.
  • a high-level language C statement is converted into one or more assemblers' list 23. Accordingly, processing blocks 10 and 11 including one or more assembler 'lists 23 are set corresponding to processing blocks 10 and 11 including one or more C statements 21.
  • Each assembler 'list 23 is converted into a machine language instruction code, and an object code 51 is generated. At the same time, debug information 52 is generated.
  • object code 51 instructions coded in the same order as the intermediate file 59 by the assembler are arranged, and are executed by the ISS2 in this order.
  • the analysis device 55 shown in FIG. 1 can divide the source program 50 into processing blocks and check the access state to the memory in units of processing blocks. For this reason,
  • a block function 61 for generating block information 54 by blocking the source program 50 is provided.
  • the analysis device 55 may have a function of internally analyzing the source program 50 by using a computer function and automatically blocking loop processing including input / output to / from the execution memory. Furthermore, the analysis device 55 has a function of blocking from the outside by the user.
  • the analysis device 55 is open to the user how to block the source program 50.
  • the source information display function 62 for displaying all or part of the C source statement 21 or assembler 'list 23 as source information via the input interface 8 based on the debug information 52 is provided to the input / output device 6. Equipped.
  • the source information display function 62 further has a function of setting an area to be blocked by the user specifying a part of the source information displayed on the input / output device 6. Therefore, as shown in FIG. 3, the user can set processing blocks by specifying the source statement 21 or the assembler 'list 23 individually or in a certain area.
  • the blocking function 61 refers to the debug information 52, and includes instructions corresponding to a part of the plurality of source statements 21 or a part of the assembler 'list 23 specified by the display device 6. A block ID 35 different from the block ID 35 of another processing block is assigned to the code memory address 25. Then, the correspondence between the code memory address 25 and the block ID 35 is stored in the memory 7 as block information 54.
  • FIG. 4 shows an example of a screen for displaying an access status to the memory.
  • the analysis device 55 further has a function 63 for displaying the access status to the execution memories 92 and 93 on the input / output device 6 as the cycle progresses based on the memory access information 53.
  • a graph 70 is displayed in which the vertical axis 71 is the memory address and the horizontal axis 72 is the total time.
  • the memory address 71 is divided into an upper part and a lower part of an address 71c of the code memory 92 and an address 71v of the variable memory 93.
  • the variable name 73 referred to in the source program 50 is also displayed in the variable memory address 71v.
  • the Memory access information 53 includes cycle information 31, code memory address 25, variable memory address 26, and access type 27. Therefore, by plotting the code memory address 25 and the variable memory address 26 on the graph 70 as the cycle progresses, the access status to the execution memories 92 and 93 can be displayed as the cycle progresses.
  • the access type 27 can be distinguished by color. For example, writing to the execution memory 93 is indicated by a red line 75, and reading from the execution memory 93 is indicated by a blue line 76. The For the code memory 92, a line 74 indicating basically reading is displayed.
  • the access status of each cycle displayed in the graph 70 includes the information of the code memory address 25, and belongs to one of the processing blocks identified by the block ID 35 by referring to the block information 54. It is possible to determine whether the access is based on an instruction. Furthermore, in ISS2, since the object code 51 is sequentially executed in the order in which the instruction codes are arranged, parallel access to the memories 92 and 93 does not occur. For this reason, the memory access status shown with the passage of cycle (cycle time) 72 belongs to one of the processing blocks. Therefore, in the graph 70, the background display is color-coded according to the cycle time 72, so that the memory access belonging to any of the processing blocks can be distinguished.
  • the area of cycle time 72 belonging to processing block 10 is indicated by a light yellow yellow background, and processing block
  • the region of the cycle time 72 belonging to the clock 11 is displayed with a light pink background, and the region of the cycle time 72 belonging to the processing block 12 is displayed with a light purple color.
  • the memory access status displayed in the graph 70 is associated with the source information that is accessed via the code memory address 25 and the block information 54. Therefore, by specifying the access cycle time for the execution memory 93 displayed graphically on the display 6d, for example, on the line 75 indicating that it is being accessed, the source statement 21 corresponding to the memory access 75 is specified. Alternatively, assembler 'list 23 can be extracted. For this reason, the function 63 for displaying the access status displays a pop-up screen 6p when an operation that can determine the block ID 35 from the top of the graph 70 is performed, and the source statement 21 of the processing block of the corresponding block ID 35 is included therein. Is displayed. The pop-up screen 6p can display the assembler's list 23 instead of or together with the source statement 21.
  • the analysis device 55 further includes two determination functions 65 and 66 for determining the condition of the inter-block pipeline operation of the processing block.
  • the first decision function 65 is a pair of processing blocks, i.e., data transfer via processing memory 93 between processing blocks 10 and 11, processing blocks 11 and 12, and processing blocks 10 and 12. Indicate whether or not the operation can be performed in the pipeline system.
  • the second determination function 66 obtains a reference relationship between the first processing block 10 and the second processing block 11 with respect to the same area of the execution memory 93, and the first processing block 10 and the second processing block 11 are obtained. Judgment of parallel execution with
  • the first determination function 65 is used for execution between the processing blocks 10 and 11 that make a pair based on the memory access information 53 and the block information 54, regardless of whether the memory access status is displayed in a graph. The presence / absence and direction of data transfer via the memory 93 can be determined. If the direction of the data transfer is negative, processing blocks 10 and 11 can be executed in parallel in a pipelined manner.
  • FIG. 6 shows a state in which the direction and amount of data transfer between the plurality of processing blocks are displayed in a matrix form on the display 6d.
  • the analyzer 55 includes a function 67 for displaying a matrix as a function attached to the first determination function 65.
  • the matrix display 77 indicating the data transfer of "From" and "To" as described above makes it possible to mutually indicate the amount of communication between the blocks. As a result, it can be seen whether or not there is communication between blocks, including the directionality. In the matrix display 77, the concept of cycle time is lost. However, it is desirable to first confirm the existence of data communication by this method and then enter into the bandwidth analysis described later. [0043] Data transfer between blocks displayed in the matrix display 77 has no concept of cycle time. However, the variable address 26 used in the data transfer is known. Therefore, by specifying any data transfer display in the matrix display 77, the source statement 21 or the assembler's list 23 related to the data transfer can be displayed.
  • FIG. 7 shows an example in which data transfer D1011 in the matrix display 77 is specified and the C source statement 21 performing the communication operation is displayed backtracked.
  • Communication consists of writing and reading, and there are usually multiple communications (timing). Therefore, from the communication display D1011, a variable window 78 displaying the variables used for the communication is displayed.
  • the variable window 78 displays, for each variable, the number 78c of operation types (read or write) at the time of execution for that variable.
  • This operation count 78c includes cycle information 31 indicating the operation. Therefore, it is possible to determine the processing block and the source statement 21 that have performed communication based on the memory access information 53 and the debug information 52. Therefore, a pop-up screen 6p displaying the source statement 21 is displayed on the display 6d. It is also possible to display assembler 'list 23 instead of source statement 21.
  • the second determination function 66 of the analysis device 55 is to analyze and determine parallel execution when two processing blocks are pipelined, and to determine the amount of data transfer and bandwidth between the two processing blocks. Perform analysis and judgment.
  • the analysis device 55 has a function 68 for displaying graphically the result of virtual execution of two processing blocks in parallel, and can display the bandwidth including the bandwidth when executed in parallel.
  • the analysis device 55 also has a function 69 for inputting operation conditions for considering parallel execution of a plurality of processing blocks.
  • the object code 51 is sequentially executed in the order described in the original source program 50. Therefore, an algorithm that is divided into a plurality of processing blocks in the analyzer 55 is also executed sequentially, and as a result, it is supplied to the analyzer 55 as the memory access information 53. Therefore, in the graphic display 70 showing the initial memory access status, as shown in FIG. 4, the processing blocks 10 and 11 are displayed under the conditions executed without parallelism.
  • FIG. 8 shows the memory access situation shown in FIG. 4 in a simplified manner.
  • processing block 10 and processing block 11 of source program 50 are sequentially processed while accessing each entry d [i] of variable memory 93 for execution.
  • the contents of access relating to element d [i] (ie, write state or read state) 27, address information (code memory address 25 and variable memory address 26), and cycle information 31 are recorded as memory access information 53.
  • the memory 93 is a memory having an entry d [i] corresponding to an address 0 word and an n word.
  • the second determination function 66 of the analyzer 55 is based on this reference relationship 96, and parallel processing when the processing blocks 10 and 11 are mounted on independent hardware, for example, independent circuits or processing units. Judge about. In other words, when processing blocks 10 and 11 are executed in parallel by different devices, the processing block 11 is advanced to the extent that it does not hesitate to execute the processing block 11 or generates a wait. Determine if it can be executed in parallel with block 10.
  • the processing blocks 10 and 11 determine how far the processing block 11 can be advanced and executed at all the memory addresses referred to each other. As a result, it is possible to finally determine the possible timing cycle of the pipeline operation between the processing blocks 10 and 11. Furthermore, it is possible to change the operation condition for parallel execution by the condition setting function 69, and the second determination function 66 analyzes the memory access information 53 according to the set operation condition.
  • FIG. 9 is a graphic display 79a as a result of examining the pipeline operation on the assumption that the memory 93 is a single port by the condition setting function 69.
  • This graph 79a shows a case where the processing block 10 and the processing block 11 of the source program 50 can be executed simultaneously and separately in hardware.
  • This graph 79a shows that the processing block 11 can be executed in parallel with the processing block 10 based on the reference relationship (access timing) to the memory 93, and the pipeline operation timing cycle Tc is a cycle in which accesses to the memory 93 do not overlap. It shows that it can be shortened to Ta. Therefore, the execution of the processing block 11 can be greatly advanced as compared with the case where the source program 50 is executed serially as shown in FIG.
  • FIG. 10 is a graphic display 79b of a result of studying pipeline operation assuming that the memory 93 is dual port in the condition setting function 69.
  • This relation graph 79b shows the timing of pipeline operation based on the timing of access to the memory 93. This shows that access to the memory 93 can be shortened to a partially overlapping cycle Tb. The timing cycle Tc is even shorter than in the case shown in Fig. 9, and the execution of processing block 11 can be further advanced.
  • the access of the processing blocks 10 and 11 is determined in units of cycles at all memory addresses at which the processing blocks 10 and 11 access the execution memory 93. Therefore, the processing amount of the writing 75 by the processing block 10 and the processing amount of the reading 76 by the processing block 11 are found in units of cycles. For this reason, when the processing blocks 10 and 11 are executed in parallel so as to perform a block pipeline operation under the above conditions, the total bit transfer amount required for accessing the memory 93 can be calculated. The sum of the bit transfer amounts corresponds to the bus width of the memory 93 and the bandwidth of the data bus required when the processing blocks 10 and 11 are executed in parallel.
  • FIG. 11 shows a state in which the evaluation result of the second determination function 66 including the bus width is displayed by the display function 68.
  • the display 6d displays a graph 79c showing a reference relationship of memory address to cycle and a graph 79d showing a relationship of bandwidth to cycle.
  • the bandwidth 71b of graph 79d is the bit width required to access the memory or bus at a certain cycle time. Total power of bandwidth per cycle Corresponds to the amount of data transferred.
  • a graph 79c showing the reference relationship between the memory address and the cycle in FIG. 11 corresponds to the operation condition graph 79b in which the memory 93 is a dual port in FIG. Therefore, graph 79d shows the bandwidth in each cycle when processing blocks 10 and 11 are executed in parallel under the operating conditions. Even under the operating conditions shown in Fig. 8 or Fig. 9, a similar graph showing the relationship between bandwidth and cycle can be displayed.
  • the graph 79d shown in Figure 11 shows how much bandwidth is required at the peak time for a device that allows simultaneous access based on dual port memory.
  • the bandwidth required for writing by the processing block 10 and the bandwidth required for reading by the processing block 11 are displayed separately by color or the like.
  • the required bandwidth is the maximum bandwidth in each cycle, and the amount of data transferred is The total bandwidth in the cycle.
  • the processing of a predetermined application given by the source program 50 is manually or automatically divided into a plurality of processing blocks of an appropriate size. be able to. Furthermore, by analyzing the memory access status with the analyzer 55, it is possible to perform block / pipeline operation of these processing blocks with multiple devices operating independently, and the reduction in processing time. And the hardware resources necessary to operate the block 'pipeline'. Therefore, the analysis device 55 and the support system 5 including the analysis device 55 can support the design and development of an economical dedicated hardware resource, such as a processor, for executing the source program 50.
  • an economical dedicated hardware resource such as a processor
  • FIG. 12 is a flowchart showing an outline of a method of analyzing the possibility of executing the source program 50 into a plurality of processing blocks and executing them in a pipeline manner and in parallel in the analysis device 55. It is.
  • debug information 52 and memory access information 53 are acquired. If this information is stored in a server connected by a computer network, it is sufficient that the conditions for accessing them are set.
  • step 81 the blocking function 61 refers to the source program 50 or the intermediate list file 59 to set a processing block.
  • the graphic display 70 of memory access status it is also possible to set processing blocks while referring to the memory access status.
  • block information 54 associated with the code memory address of each instruction of the appropriate block ID source program 50 is generated and recorded in the memory 7.
  • step 82 the first processing function 65 is used as a memory access analysis means, based on the memory access information 53 and the block information 54, through the execution memory between the paired processing blocks. The direction of data transfer is required. The result is displayed in a matrix by the matrix display function 67 in step 83.
  • step 81 It can be determined whether or not the set processing block can be executed in a pipeline manner. Therefore, in step 84, it is determined whether it is necessary to reset the processing block. If necessary, the process returns to step 81 to change the processing block setting. For example, change the division position of the source program 50.
  • the resetting of the processing block is extremely easy. Even if the processing block having a different configuration that does not require re-execution of compilation or re-execution of simulation by ISS2 is set, the analysis result of the source program 50 based thereon can be obtained in a short time.
  • the set three processing blocks 10, 11, and 12 are executed as shown in FIG. If these three processing blocks 10, 11 and 12 have a data transfer relationship as shown in the matrix display 77 of FIG. 6, the processing blocks 10, 11 and 12 can form pipelines in this order. Therefore, as shown in FIG. 14, it can be seen that the processing blocks 10, 11 and 12 can be executed in pipeline parallel. In this way, it is effective for the analysis device 55 to display on the display 6d the state in which the processing of the source program 50 is executed in accordance with the passage of the cycle (cycle time) in units of processing blocks. For this reason, the analyzer 55 has a function 64 for displaying the result of simulating the state of execution in units of processing blocks.
  • step 85 the operating conditions including the type of the memory 93 and the bus bandwidth are set by the operating condition input function 69.
  • the second determination function 66 is used as a memory access analysis means, and based on the memory access information 53 and the block information 54, processing blocks for the same area of the execution memory 93, for example, processing block 10 and processing block The eleven reference relationships are obtained to determine the possibility of executing these processing blocks 10 and 11 in parallel.
  • step 87 the result including the bandwidth is displayed by the graph display function 68.
  • step 88 If the analysis result is judged and it is desired to reset the operating condition in step 88, the process can be returned to step 85 to be reanalyzed.
  • step 89 the processing block If it is desired to reset the block, the processing power for changing the block information 54 can be executed again by returning to step 81.
  • the condition that can be changed by setting the operating condition is not limited to whether the memory described in the above example is a single port or a dual port, but may be latency spent for memory access.
  • the conditions of the pipeline between blocks change depending on the setting of the block area, and the performance and economic effects also change. Therefore, in actual hardware design, it is desirable to compare performance and cost under several conditions. In any case, as described above, it is not necessary to regenerate the debug information 52 and the memory access information 53, so that an analysis result can be obtained in a short time.
  • the analysis device 55 can also be realized by using a general-purpose computer that may be realized by dedicated hardware.
  • a program or program product for causing a computer to operate as an analyzer has instructions that allow the computer to execute the functions described above, and can be provided by being recorded on a suitable recording medium such as a CD-ROM. it can. It is also possible to provide the program via a computer network such as the Internet.
  • the determination program of the present invention can be applied not only to pipeline operation determination but also to data transfer amount and bandwidth determination.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Debugging And Monitoring (AREA)
  • Advance Control (AREA)

Abstract

 ソースプログラムをコンパイルする際に生成されるデバッグ情報と、オブジェクトコードをシミュレータで走行することにより生成されるメモリアクセス情報とを用いて、ソースプログラムを分割実行する可能性を解析する分析装置を提供する。分析装置は、ソースプログラムのソースステートメントの一部を処理ブロックとしてグループ化するためのブロックIDを、デバッグ情報に基づき、それぞれの命令のコードメモリアドレスに関連付けして記憶するメモリと、メモリアクセス情報に基づき、ソースプログラムを実行したときの、コードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含めた、実行用メモリに対するアクセス状況を、サイクルの経過と共に、それぞれの命令のコードメモリアドレスに関連付けされたブロックIDにより異なる形態で表示デバイスにグラフィック表示するグラフィック表示機能とを有する。

Description

ソースプログラムの分析装置および方法
技術分野
[0001] ソースプログラムにより記述された処理を実行するためのデバイスの設計およびそ の設計を支援するための分析装置および方法に関するものである。
背景技術
[0002] 特開 2003— 216678号公報〖こは、 C言語で記述された仕様あるいはプログラムを 実行する際に、プログラム中の特定のプロセスあるいはプログラムファンクションを専 用回路化し、プログラムを効率よく稼動させることが開示されている。また、その専用 回路に対する命令セットを、サイクルに分解したモデルでシミュレートすることができる 、サイクルベースの命令レベルシミュレータ(以降、 ISS)が記載されている。
[0003] 複数のソースステートメントを含むプログラムは、それらのソースステートメントの処理 が逐次実行されることが基本である。プログラムを実行するハードウェア資源に余裕 があれば、プログラムの一部を分割して並列に実行することにより処理を効率ィ匕する ことが試みられる。並列化の 1つの方法は命令単位で並列に実行することである。他 の方法の 1つは、複数の命令を含むブロック(処理ブロック)に分割し、プログラムをブ ロック単位で並列に同時実行することである。さらに、並列に稼動可能な処理ブロック に対して、それらの処理ブロックがパイプラインを構成するようにデータを順番に供給 して処理を進める、いわゆるブロック 'パイプライン処理がある。
発明の開示
[0004] 本発明の一つの形態は、デバイスの設計を支援するシステムであり、コンパイラと、 シミュレータと、これらコンパイラおよびシミュレータ力も得られた情報によりソースプロ グラムを分析するための装置とを有する。コンパイラは、複数のソースステートメントを 含むソースプログラムをコンパイルしてオブジェクトコードを生成すると共に、デバッグ 情報を生成する。デバッグ情報は、それぞれのソースステートメントおよび Zまたはそ れぞれのソースステートメントを中間言語に翻訳した中間リストと、中間リストがコード 化された命令のコードメモリアドレスおよびその命令によりアクセスされる変数の変数 メモリアドレスとを関連付けするデバッグ情報を含む。コードメモリアドレスおよび変数 メモリアドレスは、オブジェクトコードの実行時の実行用メモリにおけるアドレスを示す
[0005] シミュレータは、サイクルベースのシミュレータであって、オブジェクトコードを走行す ることにより、メモリアクセス情報を生成する。メモリアクセス情報は、サイクル単位でァ クセスされるコードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含む。
[0006] 分析装置は、複数のソースステートメントの一部または中間リストの一部を処理プロ ックとしてグループィ匕するためのブロック IDを、デバッグ情報に基づき、それぞれの 命令のコードメモリアドレスに関連付けして記憶するメモリと、メモリアクセス情報に基 づき、ソースプログラムを実行したときの実行用メモリに対するアクセス状況を、サイク ルの経過と共に、表示デバイスにグラフィック表示するグラフィック表示機能とを有す る。アクセス状況には、変数メモリアドレスおよびアクセスタイプが含まれる。さらに、ァ クセス状況には、さら〖こ、コードメモリアドレスを含めても良い。さら〖こ、アクセス状況は 、それぞれの命令のコードメモリアドレスに関連付けされたブロック IDにより異なる形 態で表示される。その 1つの形態は、アクセス状況を、ブロック IDの相違により色分け して表示することである。
[0007] 分析装置は、ブロック IDを、それぞれの命令のコードメモリアドレスに関連付けして メモリに記憶する。アクセス状況は、コードメモリアドレスおよび変数メモリアドレスを含 み、コードメモリアドレスおよびブロック IDを介して、それぞれの命令が属する処理ブ ロックと関連付けされる。したがって、グラフィック表示機能は、サイクル (サイクル時刻 )の経過と共に変化するアクセス状況を、そのアクセスを行なっている命令が含まれる 処理ブロックの単位で識別できるように表示できる。そして、この分析装置は、メモリに 記憶された、ブロック IDと、ソースステートメントまたは中間リストとを関連付けするため のデータを変更することにより、それぞれの命令のコードメモリアドレスに対するブロッ ク IDが変更される。したがって、ソースプログラムあるいは中間リストをベースとして、 プログラム内の複数の処理ブロックの構成を簡単に、そして、フレキシブルに変更で きる。このため、コンパイルおよびシミュレーションを繰り返すことなぐ短時間で、リア レンジされた処理ブロックに基づき、実行用メモリに対するアクセス状況を表示できる [0008] ソースプログラムを自動的に分析して複数の処理ブロックを設定することも可能であ る。一方、ユーザが外部力も複数の処理ブロックをフレキシブルに指定あるいは定義 できることは、デバイスの設計段階において重要である。例えば、表示デバイスに表 示されたソースステートメントの一部あるいは中間レベルの一部を選択するだけで、ソ ースプログラムを分割するための複数の処理ブロックの構成を変更できる。ソースレ ベルあるいは中間言語レベルで処理ブロックを変更できる分析装置は、複数のソー スステートメントの少なくとも一部または中間リストの少なくとも一部を表示デバイスに 表示する機能と、表示デバイス上で指定された複数のソースステートメントの一部また は中間リストの一部に対応する命令のコードメモリアドレスに対して、デバッグ情報を 参照して、他の処理ブロックのブロック IDとは異なるブロック IDを割当てる機能とを有 することが望ましい。
[0009] アクセス状況として表示されたコードメモリアドレスを指定することにより、プログラム の処理ブロックの構成を変更することも可能である。そして、デバッグ情報を参照する ことにより、そのリアレンジされた処理ブロックをソースプログラムレベルあるいは中間 言語レベルで表示することができる。どのような方法により複数の処理ブロックの指定 を変更しても、プログラムの処理ブロックの構成を変えた段階で、シミュレーションを再 実行しなくても、再構成ある!/、は再分割された処理ブロックによりアクセス状況を表示 できる。
[0010] 本発明の他の一つの形態は、デバッグ情報と、メモリアクセス情報とを利用して、複 数のソースステートメントを備えたソースプログラムを分析する処理をコンピュータによ り実行するためのプログラムあるいはプログラム製品である。この分析処理は、複数の ソースステートメントの一部または中間リストの一部を処理ブロックとしてグループ化す るためのブロック IDを、デバッグ情報に基づき、コードメモリアドレスに関連付けしてメ モリに記憶する機能(工程)と、メモリアクセス情報に基づき、ソースプログラムを実行 したときの、コードメモリアドレス、変数メモリアドレスおよびアクセスタイプを含めた、実 行用メモリに対するアクセス状況を、サイクルの経過と共に、コードメモリアドレスに関 連付けされたブロック IDにより異なる形態で表示デバイスにグラフィック表示する機能 (工程)とを含む。このプログラムは、適当な記録媒体に記録して提供でき、コンビュ ータにインストールすることにより、コンピュータを分析装置として機能させることがで きる。
[0011] この分析装置は、ソースプログラムを複数の処理ブロックに分割する構成を変更す ることが簡単であり、シミュレーションをやり直すことなぐ種々の処理ブロックの構成 に対して、処理ブロックの単位で実行用メモリに対するアクセス状況を表示できる。こ のため、分析装置は、 CPUあるいは他の適当な演算機能をメモリアクセス解析手段 として、指定された処理ブロックの構成について、処理ブロックの単位で、実行用メモ リに対するアクセス状況を解析できる。
[0012] この分析装置において、メモリアクセス情報と、それぞれの命令のコードメモリアドレ スに関連付けされたブロック IDとに基づき、対をなす処理ブロックの間の実行用メモリ を介したデータ転送の方向を示す第 1の判断機能は、ブロック間のパイプライン処理 の可能性を判断するために有効である。ソースプログラム内の処理ブロックの構成を 変えたときに、対を成す処理ブロックの間のデータ転送方向が一方向であれば、その 対をなす処理ブロックをパイプライン方式で並列実行できる。
[0013] 対をなす処理ブロックが複数ある場合は、それらの間の実行用メモリを介したデー タ転送の量および方向を表示デバイスにマトリクス表示することにより、ノ ィプライン 方式で並列実行できる処理ブロックのペアを簡単に指定できる。デバッグ情報を利用 して、マトリクス表示されたデータ転送のいずれかを指定することにより、そのデータ 転送に対応するソースステートメントまたは中間リストを表示デバイスに表示することも 可能である。
[0014] 本発明の一つの形態は、デバッグ情報と、メモリアクセス情報とを利用して、複数の ソースステートメントを備えたソースプログラムを分析する方法であって、以下の工程 を有する。
al. 複数のソースステートメントの一部または中間リストの一部に対して、複数のソ ースステートメントの一部または中間リストの一部を処理ブロックとしてグループィ匕する ためのブロック IDを割当て、そのブロック IDをデバッグ情報に基づき、それぞれの命 令のコードメモリアドレスに関連付けしてメモリに記憶する。 a2. メモリアクセス情報と、コードメモリアドレスに関連付けされたブロック IDとに基 づき、メモリアクセス解析手段により、対を成す処理ブロックの間の実行用メモリを介し たデータ転送の方向を求める。
a3. 複数の対をなす処理ブロックの間の実行用メモリを介したデータ転送の量およ び方向を表示デバイスにマトリクス表示する。
[0015] 分析装置において、指定された処理ブロックの構成について、メモリアクセス情報と 、それぞれの命令のコードメモリアドレスに関連付けされたブロック IDとに基づき、実 行用メモリの同一領域に対する第 1の処理ブロックおよび第 2の処理ブロックの参照 関係を求める第 2の判断機能も有用である。参照関係が求まれば、実行用メモリの同 一領域に対するアクセスが重ならな 、あるいは逆転しな 、範囲が判断できる。重なら ない範囲あるいは逆転しない範囲であれば、その範囲は、他の処理ブロックのァクセ スを許すことができる。そのような条件で、第 1の処理ブロックと第 2の処理ブロックと は並列実行可能であり、第 1の処理ブロックと第 2の処理ブロックとを、仮想的に並列 実行した結果を示すことができる。
[0016] この第 2の判断機能により、メモリアクセス状態情報の順序関係を分析することによ り、複数の処理ブロックを、どこまで重複させて実行可能かが判定できる。前の処理 ブロック(ブロック領域の処理)がデータを書き出してから、後の処理ブロックがそのデ ータを読み込むと 、う処理上の順序制限を満たす場合は、それらの処理ブロックは、 その参照関係を満足する範囲において並列実行することが可能であり、処理時間を さらに短縮できる。
[0017] さらに、メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けさ れたブロック IDとに基づき、第 1の処理ブロックおよび第 2の処理ブロックと並列実行 したときの実行用メモリとの間のアクセスに要するバンド幅を算出できる。指定された 1 の処理ブロックと他の処理ブロックとの間のバンド幅を判定するために、バンド幅対サ イタルの関係をグラフにより表示する機能を設けることは有効である。また、利用可能 なバンド幅などの複数の処理ブロックのパイプライン動作の条件を設定する機能また は工程を設けることも有効である。
[0018] 本発明の他の一つの形態は、ノ ィプライン動作に関し、ソースプログラムを分析す る方法であり、以下の工程を有する。
bl. 複数のソースステートメントの一部または中間リストの一部に対して、複数のソ ースステートメントの一部または中間リストの一部を処理ブロックとしてグループィ匕する ためのブロック IDを割当て、そのブロック IDをデバッグ情報に基づき、それぞれの命 令のコードメモリアドレスに関連付けしてメモリに記憶する。
b2. メモリアクセス情報と、それぞれの命令のコードメモリアドレスに関連付けされた ブロック IDとに基づき、メモリアクセス解析手段により、実行用メモリの同一領域に対 する第 1の処理ブロックおよび第 2の処理ブロックの参照関係を求めて、第 1の処理 ブロックと第 2の処理ブロックとを並列実行する可能性を示す。
b3. メモリアクセス解析手段により、メモリアクセス情報と、それぞれの命令のコード メモリアドレスに関連付けされたブロック IDとに基づき、第 1の処理ブロックおよび第 2 の処理ブロックと実行用メモリとの間のアクセスに要するバンド幅を算出する。
[0019] これらの分析装置および方法においては、複数の処理ブロックのパイプライン方式 により実行する可能性、さらには、単純なパイプライン方式より並列度を高めて実行 する可能性を、プログラムそのものを独立分割してシミュレーションせずに判断できる 。その結果、パイプライン方式と、並列実行とが可能であり、それに適した複数の処理 ブロックの構成、並列実行のために要するデータ転送量やバンド幅が判明する。そ の情報を利用することにより、ソースプログラムにより記述された処理を、複数のブロッ ク領域 (処理ブロック)に分け、それらを適当なタイミングで個別のハードウェアにより 実行可能とし、所謂マルチプロセッサデバイスの動作環境でソースプログラムにより 記述された処理を実行するデバイスを設計できる。ブロック'パイプライン動作の判定 の結果、 1の構成となるようにプログラムをブロック化したのでは所望の性能に至ること が不可能と判定されれば、 GUI環境で処理ブロックの定義を変えて、他の構成となる ようにプログラムをブロック化した場合のブロック 'パイプライン動作の可否を判定でき る。
図面の簡単な説明
[0020] [図 1]図 1は、分析装置を含む支援システムの概要を示す。
[図 2]図 2は、デバッグ情報、メモリアクセス情報およびブロック情報の概要を示す。 [図 3]図 3は、ソースプログラムの記述に対して処理ブロックを設定する概要を示す。
[図 4]図 4は、メモリアクセス状況を示す表示例。
[図 5]図 5は、処理ブロック間のデータ転送の説明。
[図 6]図 6は、データ転送のマトリクス表示例。
[図 7]図 7は、マトリクス表示力もソースステートメントをバックトラックして表示する例。
[図 8]図 8は、メモリアクセスの参照関係の一例を示す。
[図 9]図 9は、処理ブロックを並列に実行したときのメモリアクセスの参照関係の一例。
[図 10]図 10は、処理ブロックを並列に実行したときのメモリアクセスの参照関係の他 の例。
[図 11]図 11は、バンド幅も含めてメモリアクセスの参照関係を示す表示例。
[図 12]図 12は、解析方法の概要を示すフローチャート。
[図 13]図 13は、複数の処理ブロックの実行状況を示す。
[図 14]図 14は、複数の処理ブロックをパイプライン方式で実行する例を示す。
[図 15]図 15は、複数の処理ブロックを並列度を高めて実行する例を示す。
発明を実施するための最良の形態
図 1は、ソースプログラム 50により記述された処理をデバイス、例えば、半導体デバ イスに実装するための設計を支援するためにソースプログラム 50を分析する支援シ ステム 5の概要を示している。分析の対象となるソフトウェア(ソースプログラム) 50は、 例えば MPEG4のプロトコルを用いて画像の圧縮伸長を行う処理を含む画像処理用 のアプリケーションである。この支援システム 5は、分析あるいは解析のターゲットとな るソースプログラム 50をコンパイルするコンパイラ 1と、コンパイルされたオブジェクトコ ード 51を走行させることにより、実行時のメモリに対するアクセス状態およびサイクル 情報を含むメモリアクセス情報 53を生成するサイクルベースの命令レベルシミュレ一 タ (ISS) 2とを備えている。コンパイラ 1は、オブジェクトコード 51と共に、デバッグ情報 52を生成する。このデバッグ情報 52は、ソースプログラム 50に含まれるソースステー トメント、例えば、 C言語により記述された Cステートメントと、そのステートメントをコード 化した命令のメモリ上のアドレス(コードメモリアドレス)と、その命令によりアクセスされ る変数のメモリ上のアドレス (変数メモリアドレス)との関連を示す結合情報を含んで ヽ る。
[0022] 支援システム 5は、デバッグ情報 52と、メモリアクセス情報 53とを用いて、ソースプロ グラム 50を、それによるメモリに対するアクセスと 、う動作面から分析する分析装置 5 5を備えている。コンパイラ 1、 ISS2および分析装置 55は、専用のハードウェアを備 えた装置であっても良い。多くのケースでは、入出力装置、記憶装置、 CPUなどの適 当なハードウェア資源を備えたコンピュータを、コンパイラ 1、 ISS2および分析装置 5 5として機能させるためのソフトウェアとして、それぞれ提供される。したがって、支援 システム 5が単体のコンピュータあるいはネットワークにより接続された複数のコンビュ ータにより実現される場合は、分析装置 55の入力となるデバッグ情報 52およびメモリ アクセス情報 53は、システム 5に含まれるハードディスクなどの適当な記録媒体を介 して、あるいは、コンピュータネットワークなどの適当な伝送経路を介して分析装置 55 に供給される。以下において、デバッグ情報 52は、結合情報に加えて、ソースプログ ラム 50およびオブジェクトコード 51に含まれる情報のうち、分析に必要な情報を含む ものとして記載されている。デバッグ情報 52と共に、ソースプログラム 50および Zまた はオブジェクトコード 51を分析装置 55に供給し、デバッグ情報 52の情報量を削減す ることち可會である。
[0023] 分析装置 55においては、ターゲットのソフトウェアであるソースプログラム 50の動作 結果を分析する際に、ソースプログラム 50におけるブロック領域の指定を行うブロック 情報 54を生成する。ブロック領域は、ソースプログラム 50に含まれる 1または複数の Cステートメントを含む。ブロック領域によりグループィ匕あるいは分割されたステートメ ントからなる 1または一群の処理は、分析装置 55においてソースプログラム 50の動作 を分析する際に、 1つの分離できない単位あるいは塊としてハンドリングされる。した がって、以降では、ソースプログラム 50が分割され、ソースプログラム 50に含まれる複 数の Cステートメントがグループ化されたものを処理ブロックと呼ぶ。ブロック情報 54 においては各々の処理ブロックに対してユニークなブロック IDを付すことで、処理ブ ロックを区另 ljする。
[0024] 分析装置 55は、適当なハードウェア資源を有するコンピュータ 3により実現される。
例えば、コンピュータ 3は、演算機能を備え、以降で説明する複数の機能を実現する ための CPU4と、データを記憶するためのメモリ 7と、コンピュータ 3を分析装置 55とし て機能させるためのプログラム (プログラム製品) 9pなどが格納された ROMなどのプ ログラムメモリ(記録媒体) 9と、入出力インターフェイス 8と、この入出力インターフェイ ス 8を介してデータを表示し、また、データを入力できる入出力デバイス 6を備えてい る。分析装置 55においては、視覚的にソースプログラム 50の動作が把握できるように GUI (グラフィカルユーザインターフェイス) 8が採用されており、入出力デバイス 6は、 グラフィック表示するための表示デバイスとしての機能を備えている。コンピュータ 3が 備えたハードウェア資源は、これらに限定されるものではない。
[0025] 図 2に、デバッグ情報、メモリアクセス情報およびブロック情報の概要を示してある。
デバッグ情報 52は、ソース情報としてソースプログラム 50に含まれる C言語のソース ステートメント(Cステートメント) 21と、ソースプログラム 50に含まれる関数定義 22と、 ソースステートメント 21を中間言語、この例ではアセンブラに変換したアセンブラ ·リス ト 23とを備えている。また、デバッグ情報 52は、オブジェクト情報として、アセンブラ'リ スト 23がコード化された命令(コード)のメモリアドレス(コードメモリアドレス) 25と、そ の命令によりアクセスされる変数のメモリアドレス (変数メモリアドレス) 26とを備えて ヽ る。さらに、デバッグ情報 52は、デバッグする際に、オブジェクト情報からソース情報 にフィードバックするためにオブジェクト情報とソース情報との関係を示す結合情報 2 9を備えている。コードメモリアドレス 25および変数メモリアドレス 26は、オブジェクトコ ード 51を半導体デバイス 90に実装し、ソースプログラム 50の処理を実行する際のメ モリ(実行用メモリ)のアドレスとなる。図 2には、プロセッサ 91と、プロセッサ 91に対し てコードを提供するコードメモリ 92と、データを記憶するデータメモリ 93とを備えたノヽ 一バードアーキテクチャタイプのデバイス 90を参考に示している。
[0026] メモリアクセス情報 53は、オブジェクトコード 51をサイクルベース ISS2により走行す ることにより作成され、デバイス 90における実行用のメモリ 92および 93に対するサイ クル単位のメモリアクセス状態が記録されたものである。メモリアクセス情報 53は、サ イタル情報 31と、そのサイクルの処理を指示する命令のコードメモリアドレス 25と、ァ クセスした変数メモリアドレス 26と、動作タイプ (アクセスタイプ)を示す情報 27とを備 えている。アクセスタイプ 27は、例えば、変数 (メモリ) 93に対して書き込みまたは読 み出しの動作をしたことが記録される。 ISS2においては、オブジェクトコード 51は、命 令コードが並んだ順番で逐次実行され、並列実行は考慮されない。このため、サイク ル情報 31に格納されるサイクルタイムに対し、 1つのコードメモリアドレス 25が対応す る。
[0027] メモリアクセス情報 53は、各サイクルで記録されるので、膨大な量となる。したがつ て、メモリアクセス情報 53は圧縮されて保持され、また、分析装置 55に供給されるこ とが望ましい。データを圧縮する方法は種々である力 サイクル情報 31は、ビット長と インクリメンタル値の組み合わせを連続して持たせる相対値による保有方式が有効で ある。また、コードメモリアドレス 25と変数メモリアドレス 26については辞書方式が有 効である。したがって、メモリアクセス情報 53には、メモリアドレス値を対応する辞書値 が保有され、メモリアクセス情報 53とは独立にデコード用のメモリアドレス辞書が分析 装置 55に供給される。
[0028] ブロック情報 54は、コードメモリアドレス 25と、ブロック ID35とを備えている。デバッ グ情報 52は、コードメモリアドレス 25を介してブロック ID35と関連付けされ、 Cステー トメント 21およびアセンブラ 'リスト 23を含むソース情報力 ブロック ID35により識別さ れる処理ブロックのいずれに属するものであるかが判明する。また、メモリアクセス情 報 53も、コードメモリアドレス 25を介してブロック ID35と関連付けされ、あるサイクル のメモリアクセスが、ブロック ID35により識別される処理ブロックのいずれに属するも のであるかが判明する。さらに、あるサイクルのメモリアクセスを特定することにより、そ れら一連のメモリアクセスを行なっている処理ブロックの Cステートメント 21を表示する ことち可會 となる。
[0029] 図 3に、ソースプログラム上でブロック領域を指定して、処理ブロックをセットする様 子を示してある。複数の Cソースステートメント 21を含んだソースプログラム 50は、入 出力する変数の相違、入力あるいは出力の相違、ループ処理など様々な観点からグ ループ化することが可能である。メモリに対するアクセスという観点からは、変数に対 して入出力する処理を含むループ処理は、アクセス量が多いので、ループ処理を一 つのブロックとしてグループィ匕することは有効である。例えば、図 3に示したソースプ ログラム 50において、メモリに対する書き込みと読み出しをそれぞれ含むループ処理 を 2つのブロック 10および 11として設定することができる。
[0030] コンパイラ 1において、ソースプログラム 50は、中間言語であるアセンブラに変換さ れ、中間ファイル 59が生成される。高級言語である C言語のステートメントは、 1つの ステートメントが、 1つまたは複数のアセンブラ 'リスト 23に変換される。したがって、 1 または複数の Cステートメント 21を含む処理ブロック 10および 11に対応して、 1また は複数のアセンブラ 'リスト 23を含む処理ブロック 10および 11が設定される。
[0031] 各々のアセンブラ 'リスト 23が機械語の命令コードに変換され、オブジェクトコード 5 1が生成される。それと共に、デバッグ情報 52が生成される。オブジェクトコード 51は 、アセンブラによる中間ファイル 59と同じ順番でコード化された命令が並び、この順 番で ISS2により実行される。
[0032] 図 1に示した分析装置 55は、ソースプログラム 50を処理ブロックに区分けして、処 理ブロックの単位でメモリに対するアクセス状態を確認することができる。このため、図
1に示すように、ソースプログラム 50をブロック化して、ブロック情報 54を生成するブロ ック化機能 61を備えている。分析装置 55は、内部において、ソースプログラム 50をコ ンピュータの機能を用いて解析し、実行用のメモリに対する入出力を含むループ処 理を自動的にブロック化する機能を備えていても良い。さらに、分析装置 55は、外部 から、ユーザにより、ブロック化する機能を備えている。
[0033] この分析装置 55は、ユーザに対して、ソースプログラム 50を、どのようにブロックィ匕 するかということを開放している。このため、入出力装置 6に対し、デバッグ情報 52に 基づき、入力インターフェイス 8を介してソース情報として Cソースステートメント 21ま たはアセンブラ 'リスト 23の全部あるいは一部を表示するソース情報表示機能 62を備 えている。ソース情報表示機能 62は、さらに、入出力装置 6に表示されたソース情報 の一部をユーザが指定することにより、ブロック化したい領域を設定する機能を備え ている。したがって、ユーザは、図 3に示したように、ソースステートメント 21またはァセ ンブラ'リスト 23を個別に、あるいはある領域で指定することにより、処理ブロックを設 定することができる。
[0034] ブロック化機能 61は、デバッグ情報 52を参照し、表示デバイス 6で指定された複数 のソースステートメント 21の一部またはアセンブラ 'リスト 23の一部に対応する命令の コードメモリアドレス 25に対して、他の処理ブロックのブロック ID35とは異なるブロック ID35を割当てる。そして、コードメモリアドレス 25と、ブロック ID35との対応関係をブ ロック情報 54としてメモリ 7に記憶する。
[0035] 図 4に、メモリに対するアクセス状況の表示画面の例を示してある。分析装置 55は、 さらに、メモリアクセス情報 53に基づき、実行用のメモリ 92および 93に対するアクセス 状況をサイクルの経過と共に入出力装置 6にグラフィック表示する機能 63を備えてい る。入出力装置 6のディスプレイ 6dには、縦軸 71がメモリアドレスとなり、横軸 72がサ イタル時間となったグラフ 70が表示される。メモリアドレス 71は、コードメモリ 92のアド レス 71cと、変数メモリ 93のアドレス 71vとに上下に分かれて表示され、変数メモリアド レス 71vにはソースプログラム 50において参照される変数名 73が合わせて表示され る。メモリアクセス情報 53は、サイクル情報 31と、コードメモリアドレス 25と、変数メモリ アドレス 26と、アクセスタイプ 27とを含んでいる。したがって、サイクルの経過にしたが つて、コードメモリアドレス 25と、変数メモリアドレス 26とをグラフ 70にプロットすること により、サイクルの経過により実行用のメモリ 92および 93に対するアクセス状況を表 示できる。アクセスタイプ 27は、色で区別することが可能であり、例えば、実行用メモ リ 93に対する書き込みは、赤のライン 75で表示され、実行用メモリ 93からの読み出し は、青のライン 76で表示される。コードメモリ 92に対しては基本的に読み出しを示す ライン 74が表示される。
[0036] グラフ 70に表示されるサイクル単位のアクセス状況は、コードメモリアドレス 25の情 報を含んでおり、ブロック情報 54を参照することにより、ブロック ID35により識別され る何れかの処理ブロックに属する命令によるアクセスかを判断することができる。さら に、 ISS2においては、オブジェクトコード 51は、命令コードが並んだ順番で逐次実 行されるので、メモリ 92および 93に対して並列なアクセスは発生しない。このため、サ イタルの経過(サイクルタイム) 72と共に示されるメモリアクセス状況はいずれか 1つの 処理ブロックに属するものになる。したがって、グラフ 70においては、サイクルタイム 7 2によりバックグラウンドの表示を色分けすることで、 、ずれかの処理ブロックに属する メモリアクセスであることを区別できるようにしている。例えば、処理ブロック 10に属す るサイクルタイム 72の領域は、ノ ックグラウンドが薄い黄色により表示され、処理ブロ ック 11に属するサイクルタイム 72の領域は、バックグラウンドが薄いピンク色により表 示され、処理ブロック 12に属するサイクルタイム 72の領域は、バックグラウンドが薄い 紫色により表示される。
[0037] また、グラフ 70に表示されたメモリアクセス状況は、コードメモリアドレス 25およびブ ロック情報 54を介して、そのアクセスを行なって 、るソース情報とも関連付けされて!ヽ る。このため、ディスプレイ 6dにグラフィック表示された実行用メモリ 93に対するァクセ スのサイクルタイム、例えば、アクセスしていることを示すライン 75の上を指定すること により、そのメモリアクセス 75に対応するソースステートメント 21またはアセンブラ 'リス ト 23を抽出できる。このため、アクセス状況を表示する機能 63は、グラフ 70の上から ブロック ID35が判断できる操作が行われると、ポップアップ画面 6pを表示し、その中 に、該当するブロック ID35の処理ブロックのソースステートメント 21を表示する。ポッ プアップ画面 6pには、ソースステートメント 21の代わりに、あるいは共に、アセンブラ' リスト 23を表示することも可能である。
[0038] 分析装置 55は、さらに、処理ブロックのブロック間ノ ィプライン動作の条件を判断す る 2つの判断機能 65および 66を備えている。第 1の判断機能 65は、対を成す処理ブ ロック、すなわち、処理ブロック 10および 11と、処理ブロック 11および 12と、処理ブロ ック 10および 12の間の実行用メモリ 93を介したデータ転送の方向を示し、パイプライ ン方式での動作の可否を判断する。第 2の判断機能 66は、実行用メモリ 93の同一領 域に対する第 1の処理ブロック 10および第 2の処理ブロック 11の参照関係を求めて、 第 1の処理ブロック 10と第 2の処理ブロック 11との並列実行性を判断する。
[0039] 複数の処理ブロックが指定された場合、それらの処理ブロックをパイプライン方式で 並列実行できる力否かを判断するため、各処理ブロックの間に通信が存在している の力否かを第 1の判断機能 65により判断する。対をなす処理ブロック、例えば、プロ ック 10および 11をパイプラインィ匕する、すなわち、パイプライン方式で実行するため には、ブロック 10からブロック 11に対して通信があり、ブロック 11力らブロック 10に対 しては通信がないことが必要である。ブロック間の通信は、変数メモリ 93を介したデー タ転送で判断される。すなわち、図 5に示すように、メモリアクセス状態をグラフィック 表示する機能 63により表示されたグラフ 70において、ブロック 10が変数メモリ 93に 対して入出力 97を繰り返し、その後のサイクルでブロック 11が変数メモリ 93の同じァ ドレスからデータを読み出す処理 98を行なっていれば、ブロック 10力らブロック 11に 対するデータ転送 (データ通信) 99が存在する。したがって、第 1の判断機能 65は、 メモリアクセス状況をグラフ表示する力否かに関わらず、メモリアクセス情報 53と、プロ ック情報 54により、対を成す処理ブロック 10および 11の間の実行用メモリ 93を介し たデータ転送の有無およびその方向を判断できる。そして、そのデータ転送の方向 がー方向であれば、処理ブロック 10および 11はパイプライン方式で並列実行できる
[0040] 図 6に、ディスプレイ 6dに、複数の処理ブロックに対して、それらの間のデータ転送 の方向および量をマトリクス表示した様子を示してある。マトリクス表示 77を採用する こと〖こより、ソースプログラム 50に 3つ以上の処理ブロック、例えば、ブロック 10〜12 が設定される場合は、ペアをなすブロック間のデータ転送の方向を視覚により容易に 把握できる。ブロック間のデータ転送量は、ブロック 'パイプラインの可否判断だけで あれば要求されないが、デバイスの設計においては、バス幅などを検討するために 重要である。分析装置 55は、第 1の判断機能 65に付属する機能として、マトリクス表 示する機能 67を備えている。
[0041] この例において、ブロック 10とブロック 11のペアでは、ブロック 10力らブロック 11に 対するデータ転送 D1011があり、逆方向のデータ転送 D1110はない。ブロック 11と ブロック 12のペアでは、ブロック 11からブロック 12に対するデータ転送 D1112があり 、逆方向のデータ転送 D1211はない。ブロック 10とブロック 12のペアでは、ブロック 10からブロック 12に対するデータ転送は両方向 D1012および D1210ともない。した がって、ブロック 10、 11および 12は、この順番にパイプライン方式で実行することが 可能である。
[0042] このような、「From」「To」のデータ転送を示すマトリクス表示 77により各ブロック間の 通信量を相互に示すことが可能となる。これによりブロック間に通信が存在しているの か否かが方向性まで含めて分かる。マトリクス表示 77においては、サイクル時間の概 念は失われている。しかしながら、まずこの方法によってデータ通信の存在を確認し 、しかる後に、後述するバンド幅分析に入ることが望ましい。 [0043] マトリクス表示 77に表示されたブロック間のデータ転送は、サイクルタイムの概念は ない。しかしながら、データ転送において使用された変数アドレス 26は分かる。した がって、マトリクス表示 77の任意のデータ転送の表示を指定することにより、そのデー タ転送に関わるソースステートメント 21あるいはアセンブラ 'リスト 23を表示することが できる。
[0044] 図 7に、マトリクス表示 77のデータ転送 D1011を指定して、その通信動作をしてい る Cソースステートメント 21をバックトラックして表示する例を示す。通信は、ライトとリ ードから成り立ち、かつ、通信の回数 (タイミング)は通常は複数である。したがって、 通信表示 D1011から、その通信に使用された変数を表示する変数ウィンドウ 78が表 示される。変数ウィンドウ 78には、変数毎に、その変数に対する実行時の動作タイプ (リードもしくはライト)の回数 78cが表示される。この動作回数 78cには、動作を行な つたサイクル情報 31が含まれている。したがって、メモリアクセス情報 53およびデバッ グ情報 52により、通信を行なった処理ブロックおよびソースステートメント 21を判断す ることができる。このため、ディスプレイ 6dに、ソースステートメント 21を表示するポップ アップ画面 6pが表示される。ソースステートメント 21の代わりにアセンブラ 'リスト 23を 表示することも可能である。
[0045] 分析装置 55の第 2の判断機能 66は、 2つの処理ブロックをパイプライン動作させた ときの並列実行の分析および判定と、それら 2つの処理ブロックの間のデータ転送量 とバンド幅の分析および判定とを行う。分析装置 55は、さら〖こ、 2つの処理ブロックを 仮想的に並列実行した結果をグラフィック表示する機能 68を備えており、並列実行し た際のバンド幅を含めて表示することができる。また、分析装置 55は、複数の処理ブ ロックの並列実行を検討するための動作条件を入力する機能 69を備えている。
[0046] 上述したように、 ISS2においては、オブジェクトコード 51は、オリジナルのソースプ ログラム 50に記述された順番でシーケンシャルに実行される。したがって、分析装置 55において複数の処理ブロックに区分けされるアルゴリズムも、シーケンシャルに実 行され、その結果カ モリアクセス情報 53として分析装置 55に供給されている。この ため、当初のメモリアクセス状況を示すグラフィック表示 70においては、図 4に示すよ うに、処理ブロック 10および 11は、並列性なしで実行された条件で表示される。 [0047] 図 8に、図 4に示したメモリアクセス状況を簡略化して示してある。ここでは、 ISS2に おいては、ソースプログラム 50の処理ブロック 10と処理ブロック 11は、実行用の変数 メモリ 93の各エントリ d[i]をアクセスしながら逐次処理され、その結果、メモリ 93の各 エレメント d[i]に関するアクセスの内容 (即ち書き込み状態又は読み出し状態) 27、 アドレス情報(コードメモリアドレス 25および変数メモリアドレス 26)、およびサイクル情 報 31がメモリアクセス情報 53として記録される。以下では、メモリ 93は、アドレス 0語 力も n語に相当するエントリ d[i]を備えたメモリであるとしている。
[0048] サイクル情報 31を含むメモリアクセス情報 53には、あるサイクル期間においてメモリ 93のあるアドレス領域 95にデータの書き込み 75を行い、その後、あるサイクル期間 においてメモリ 93の同じアドレス領域 95からデータの読み出し(読み込み) 76を行な うといつた過程が記録されている。分析装置 55の第 2の判断機能 66においては、ブ ロック情報 54を参照することにより、メモリアクセス情報 53を解析することにより、コー ドメモリアドレス 25を介して、データの書き込み 75が処理ブロック 10により行なわれ、 データの読み出し 76が処理ブロック 11により行なわれたことが分かる。したがって、 第 2の判断機能 66では、メモリ 93のアドレス領域 95に対して、処理ブロック 10と処理 ブロック 11とは、ある参照関係 96を備えていることが分かる。
[0049] 分析装置 55の第 2の判断機能 66は、この参照関係 96に基づき、処理ブロック 10と 11を、独立のハードウェア、例えば、独立の回路あるいは処理ユニットに実装した場 合の並列処理について判断する。すなわち、処理ブロック 10および 11を異なるデバ イスにより並列に実行する場合に、処理ブロック 11の実行に齟齬をきたさないで、あ るいはウェイトを発生させないで、どこまで処理ブロック 11を前進させて、処理ブロック 10と部分的に並列に実行させることが可能となるかを判断する。
[0050] 上述した第 1の判断機能 65により、処理ブロック 10と処理ブロック 11との間にバック トラックを発生させる逆方向のデータ転送がない場合は、処理ブロック 10と処理プロ ック 11とに順番にデータを流すことにより、ブロック単位でパイプライン処理を行うこと ができる。この第 2の判断機能 66においては、同じデータ群あるいはフレームの処理 を処理ブロック 10と処理ブロック 11とが時間的に一部重複して、あるいは一部並列に 実行できるか否かを検討する。処理ブロック 10および 11が、一部重複して処理を実 行することにより、ブロック'パイプライン動作をさらに進めて処理速度を向上すること が可能となる。
[0051] このため、第 2の判断機能 66においては、処理ブロック 10および 11により、互いに 参照される、すべてのメモリアドレスにおいて、処理ブロック 11をどこまで前進させて 実行できるか判断する。これにより、これら処理ブロック 10および 11の間のパイプライ ン動作の可能なタイミング 'サイクルが最終的に判定できる。さらに条件設定機能 69 により、並列実行の動作条件を変更することが可能であり、第 2の判断機能 66により 、設定された動作条件に従ってメモリアクセス情報 53を解析する。
[0052] 図 9は、条件設定機能 69によりメモリ 93がシングルポートであるとして、パイプライン 動作を検討した結果のグラフィック表示 79aである。このグラフ 79aは、ソースプロダラ ム 50の処理ブロック 10と処理ブロック 11とを、ハードウェア的に分離独立して同時実 行可能とした場合を示している。このグラフ 79aは、メモリ 93への参照関係(アクセス のタイミング)より、処理ブロック 11を処理ブロック 10と一部並列に実行でき、パイプラ イン動作のタイミング ·サイクル Tcをメモリ 93に対するアクセスが重複しないサイクル T aまで短縮できることを示している。したがって、処理ブロック 11の実行は、図 8に示し たように、ソースプログラム 50をシリアルに実行した場合に比べて大きく前進させるこ とがでさる。
[0053] 図 10は、条件設定機能 69にメモリ 93がデュアルポートであるとして、パイプライン 動作を検討した結果のグラフィック表示 79bである。この関係グラフ 79bは、処理ブロ ック 10と処理ブロック 11と力 ハードウェア的に分離独立して同時実行可能とした場 合、メモリ 93へのアクセスのタイミングより、パイプライン動作のタイミング.サイクル Tc をメモリ 93に対するアクセスが部分的に重複したサイクル Tbまで短縮できることを示 している。タイミング ·サイクル Tcは図 9に示したケースよりさらに短くなり、処理ブロッ ク 11の実行をさらに前進させることができる。
[0054] これらの検討結果は、処理ブロック 10と処理ブロック 11とに区分けされた処理にお いては、シングルポートメモリを用いて、書き込み 75と読み出し 76が同時実行されな Vヽ条件でブロック間パイプライン処理をするハードウェアに対し、デュアルポートメモリ を用いて書き込み 75と読み出し 76とが同時実行される条件でブロック間パイプライン 処理するハードウェアの方が処理時間を短縮できることを示している。したがって、デ ユアルポ一トメモリを採用したときの処理時間の短縮による性能的なメリットと、シング ルポ一トメモリを採用したときの経済的なメリットとを判断して、ソースプログラム 50を 実行するハードウェアを決定できる。
[0055] この第 2の判断機能 66においては、処理ブロック 10および 11が実行メモリ 93にァ クセスするすべてのメモリアドレスにおいて、それぞれの処理ブロック 10および 11の アクセスをサイクル単位で判断する。したがって、処理ブロック 10による書き込み 75 の処理量と、処理ブロック 11による読み出し 76の処理量がサイクル単位で判明する 。このため、処理ブロック 10および 11を、上記の条件でブロック 'パイプライン動作す るように並列実行したときに、メモリ 93とのアクセスに必要なビット転送量の総和を計 算できる。このビット転送量の総和は、処理ブロック 10および 11を並列実行する際に 必要なメモリ 93のバス幅およびデータバスのバンド幅に対応する。
[0056] 図 11に、バス幅も含めた第 2の判断機能 66の評価結果を表示機能 68により表示し た様子を示してある。ディスプレイ 6dには、メモリアドレス対サイクルの参照関係を示 すグラフ 79cと、バンド幅対サイクルの関係を示すグラフ 79dとが表示される。グラフ 7 9dのバンド幅 71bは、あるサイクルタイムにおけるメモリあるいはバスをアクセスする 際に要求されるビット幅である。サイクル毎のバンド幅の総和力 データ転送量に相 当する。
[0057] 図 11のメモリアドレス対サイクルの参照関係を示すグラフ 79cは、図 10においてメ モリ 93をデュアルポートとした動作条件のグラフ 79bに相当する。したがって、グラフ 79dは、その動作条件で処理ブロック 10および 11を並列実行したときの各サイクル におけるバンド幅を示している。図 8あるいは図 9に示した動作条件であっても同様の バンド幅対サイクルの関係を示すグラフを表示できる。図 11に示したグラフ 79dにより 、デュアルポートメモリを前提とした同時アクセスを許容する仕様のデバイスにお 、て 、ピーク時にどの程度のバンド幅が要求されるかが判明する。バンド幅を示すグラフ 7 9dにおいては、処理ブロック 10による書き込みに必要とされるバンド幅と、処理ブロッ ク 11による読み出しに必要とされるバンド幅が色などにより区別して表示される。必要 とされるバンド幅は、各サイクルにおけるバンド幅の最大値であり、データ転送量は各 サイクルにおけるバンド幅の総和になる。また、この例ではオーバラップしているが、 書き込み 75と読み出し 76の時間総和 Ttが判明するので、サイクル平均のバンド幅 の算出も可能である。
[0058] このように、分析装置 55においては、ソースプログラム 50により与えられた所定のァ プリケーシヨンの処理を、適当な大きさの複数の処理ブロックに、マニュアルで、ある いは自動的に区切ることができる。さらに、分析装置 55によりメモリアクセス状況を解 析することにより、それらの処理ブロックを、独立して稼動する複数のデバイスによりブ ロック ·パイプライン動作させることの可否と、それによる処理時間の短縮度と、ブロッ ク 'パイプライン動作させるために必要なハードウェアリソースとを判断できる。したが つて、分析装置 55およびそれを含む支援システム 5により、ソースプログラム 50を実 行するための、経済的な専用ハードウェアリソース、たとえばプロセッサの、設計およ び開発を支援することができる。
[0059] 図 12に、分析装置 55において、ソースプログラム 50を複数の処理ブロックに分け て、それらをパイプライン方式で実行する可能性および並列実行する可能性を解析 する方法の概要をフローチャートにより示してある。まず、ステップ 80において、デバ ッグ情報 52およびメモリアクセス情報 53を取得する。これらの情報がコンピュータネッ トワークにより接続されたサーバなどに格納されている場合は、それらにアクセスでき る条件がセットされれば十分である。
[0060] 次に、ステップ 81において、ブロック化機能 61により、ソースプログラム 50または中 間リストファイル 59を参照して、処理ブロックを設定する。メモリアクセス状況のグラフ イツク表示 70において、メモリアクセス状態を参照しながら処理ブロックを設定するこ とも可能である。このステップ 81において、適当なブロック ID力 ソースプログラム 50 のそれぞれの命令のコードメモリアドレスに関連付けされたブロック情報 54が生成さ れてメモリ 7に記録される。
[0061] 次に、ステップ 82において、第 1の処理機能 65をメモリアクセス解析手段として、メ モリアクセス情報 53と、ブロック情報 54に基づき、対を成す処理ブロックの間の実行 用メモリを介したデータ転送の方向が求められる。その結果が、ステップ 83において 、マトリクス表示機能 67によりマトリクス表示される。この段階で、ステップ 81において 設定した処理ブロックをパイプライン方式で実行できるカゝ否かを判断できる。したがつ て、ステップ 84において、処理ブロックを再設定する必要があるかを判断し、必要が あれば、ステップ 81に戻って、処理ブロックの設定を変更する。例えば、ソースプログ ラム 50の分割位置などを変更する。上述したように、ブロック情報 54により処理ブロッ クの設定を自由に変更できるので、分析装置 55においては、処理ブロックの再設定 は極めて容易である。そして、コンパイルを再実行したり、 ISS2によるシミュレーショ ンを再実行する必要もなぐ異なる構成の処理ブロックを設定しても、それに基づくソ ースプログラム 50の解析結果を短時間に得ることができる。
[0062] 例えば、 ISS2によりソースプログラム 50に記述された命令を逐次実行したときに、 設定された 3つの処理ブロック 10、 11および 12は、図 13に示したように実行される。 これら 3つの処理ブロック 10、 11および 12において、図 6のマトリクス表示 77のような データ転送関係があれば、処理ブロック 10、 11および 12は、この順番でパイプライ ンを組むことが可能となる。したがって、図 14に示したように、処理ブロック 10、 11お よび 12をパイプライン並列で実行することができることがわかる。分析装置 55が、こ のように、処理ブロック単位で、サイクルの経過(サイクルタイム)にしたがってソースプ ログラム 50の処理が実行されている様子をディスプレイ 6dに表示することは有効であ る。このため、分析装置 55は、処理ブロックの単位で実行される様子をシミュレートし た結果を表示する機能 64を備えて 、る。
[0063] 複数の処理ブロックをパイプライン並列で処理できる場合、さらに、並列度を向上で きる力否かの評価 (解析)を行なうことができる。ステップ 85において、動作条件の入 力機能 69によりメモリ 93のタイプ、バスのバンド幅などを含む動作条件をセットする。 ステップ 86において、第 2の判断機能 66をメモリアクセス解析手段として、メモリァク セス情報 53と、ブロック情報 54とに基づき、実行用メモリ 93の同一領域に対する処 理ブロック、例えば、処理ブロック 10および処理ブロック 11の参照関係を求めて、こ れらの処理ブロック 10および 11を並列実行する可能性を判断する。ステップ 87にお いて、その結果をバンド幅も含めて、グラフ表示機能 68により表示する。
[0064] 解析結果を判断し、ステップ 88にお ヽて動作条件の再設定を希望する場合は、ス テツプ 85に戻って、再解析することができる。また、ステップ 89において、処理ブロッ クの再設定を希望する場合は、ステップ 81に戻って、ブロック情報 54を変更する処 理力 再度実行することができる。動作条件の設定で変更可能な条件は、上記の例 で述べたメモリがシングルポートであるとかデュアルポートであるとかに限らず、メモリ アクセスに費やされるレイテンシなどであっても良い。また、ブロック領域の設定によ つてもブロック間パイプラインの条件は変わり、性能や経済的な効果も変動する。した がって、実際のハードウェアの設計においては、幾つかの条件で性能およびコストを 比較することが望ましい。いずれの場合も、上述したように、デバッグ情報 52およびメ モリアクセス情報 53を再生成する必要がな 、ので、短時間で解析結果を得ることが できる。
[0065] 第 2の解析機能 65によるメモリ 93の参照関係の解析の結果、処理ブロック 10と処 理ブロック 11との間では並列に実行が可能であり、処理ブロック 11と処理ブロック 12 との間では並列実行が不可能であると判断される。したがって、図 15に示すように、 処理ブロック 10、 11および 12をブロック 'パイプライン方式で実行する場合、処理ブ ロック 10および 11を一部重複して並列に実行できることが分かる。したがって、ソー スプログラム 50により与えられたアプリケーションの処理をさらに加速できることがわ かる。
[0066] 上記の解析方法で解析した結果、ターゲットのソフトウェア自体を改変する等の処 理をして最適化する必要が生じた場合であっても、実際に、ソフトウェア(ソースプログ ラム)を独立分割してデバイスへの実装を進めて力も性能が満たされな 、と判明する よりは遥かに設計期間を短縮できる。従来、機能がブロック単位に逐次構成されてい るソフトウェアを実行すれば、ブロック単位に順次実行され、いわゆる逐次処理が行 われる。このソフトウェアをブロック単位に並列同時実行させるには、ソフトウェアその ものをブロック単位に独立分割し、同時実行する環境にて走行させて分析するのが 常であった。しカゝしながら、これでは独立分割してみないと、並列実行された場合の 処理性能、その構成におけるデータ転送量、あるいはバンド幅が分力 ない。分割そ のものは大変な作業であり、かつ、分割可能な点あるいは領域力 ^、くつもある場合に は、どこで分割すればどのような結果となるのかは、分割してみないと分力もないとい う状況になる。デバイスの設計過程における、前述のような状況に対して、この分析 装置 55および分析装置を用いた解析方法は極めて有効な解を提供できる。
[0067] すなわち、ソフトウェアを分割せずに、メモリアクセス情報を記録する機能を有する I SSを実行し、しかる後に分析した 、対象となるソフトウェアのブロック領域を指定する だけで分離独立させた際と同等な解析が可能となる。したがって、ターゲットのソフト ウェアを分離独立せずに、ノ ィプライン並列性の特性と必要とされるデータ転送量と バンド幅の判定が可能となり、従来の初期分離分割手法に比べ大幅な設計期間の 短縮が可能となる。このため、分析装置 55を用いた支援システム 5は、マルチプロセ ッサの開発環境における初期段階で効果を発揮する。
[0068] 分析装置 55は、専用のハードウェアで実現しても良ぐ汎用のコンピュータを用い て実現することも可能である。コンピュータを分析装置として動作させるためのプログ ラムまたはプログラム製品は、上述した各機能をコンピュータにより実行可能な命令を 有するものであり、 CD— ROMなどの適当な記録媒体に記録して提供することができ る。また、プログラムをインターネットなどのコンピュータネットワークを介して提供する ことも可能である。
[0069] また、上記では、ソースプログラム 50に対して、処理ブロック 10、 11および 12の 3つ のブロック領域を設定して分析装置 (解析装置) 55にて解析する例を説明してきたが 、ブロック指定は 1または 2でもよぐ 4以上であっても良い。ブロック指定が 1つの場合 は、ひとつのブロック領域が指定され、指定されな力つた部分がもうひとつのブロック と認識される。したがって、本発明の判定プログラムは、パイプライン動作判定に限ら ず、データ転送量およびバンド幅の判定にも適用できる。

Claims

請求の範囲
[1] 複数のソースステートメントを含むソースプログラムをコンパイルしてオブジェクトコー ドを生成すると共に、それぞれのソースステートメントおよび Zまたは前記それぞれの ソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコードの実 行時の実行用メモリにおける、前記中間リストがコード化された命令のアドレスである コードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変数メ モリアドレスとを関連付けするデバッグ情報を生成するコンパイラと、
サイクルベースのシミュレータであって、前記オブジェクトコードを走行することにより 、サイクル単位でアクセスされるコードメモリアドレス、変数メモリアドレスおよびァクセ スタイプを含むメモリアクセス情報を生成するシミュレータと、
前記デバッグ情報と前記メモリアクセス情報とを利用して前記ソースプログラムを分 析する分析装置とを有し、
この分析装置は、
前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロック としてグループィ匕するためのブロック IDを、前記デバッグ情報に基づき、それぞれの 命令のコードメモリアドレスに関連付けして記憶するメモリと、
前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモ リアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、 サイクルの経過と共に、前記それぞれの命令のコードメモリアドレスに関連付けされた ブロック IDにより異なる形態で表示デバイスにグラフィック表示する機能とを備えてい る、支援システム。
[2] デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備え たソースプログラムを分析するための装置であって、
前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生 成する段階で生成され、それぞれのソースステートメントおよび Zまたは前記それぞ れのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコード の実行時の実行用メモリにおける、前記中間リストがコードィ匕された命令のアドレスで あるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変 数メモリアドレスとを関連付けする情報を含み、
前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータ で走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変 数メモリアドレスおよびアクセスタイプを含み、
さらに、
前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロック としてグループィ匕するためのブロック IDを、前記デバッグ情報に基づき、それぞれの 命令のコードメモリアドレスに関連付けして記憶するメモリと、
前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモ リアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、 サイクルの経過と共に、それぞれの命令のコードメモリアドレスに関連付けされたプロ ック IDにより異なる形態で表示デバイスにグラフィック表示するグラフィック表示機能と を有する装置。
[3] 前記グラフィック表示機能は、前記アクセス状況を、ブロック IDの相違により色分け して表示する、請求項 2の装置。
[4] 前記複数のソースステートメントの少なくとも一部または前記中間リストの少なくとも 一部を前記表示デバイスに表示する機能と、
前記表示デバイス上で指定された前記複数のソースステートメントの一部または前 記中間リストの一部に対応する命令のコードメモリアドレスに対して、前記デバッグ情 報を参照し、他の処理ブロックのブロック IDとは異なるブロック IDを割当てる機能とを 有する、請求項 2の装置。
[5] 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付け されたブロック IDとに基づき、対を成す処理ブロックの間の前記実行用メモリを介した データ転送の方向を示す、第 1の判断機能を、さらに有する、請求項 2の装置。
[6] 前記第 1の判断機能は、複数の対をなす処理ブロックの間の前記実行用メモリを介 したデータ転送の量および方向を前記表示デバイスにマトリクス表示する機能を備え ている、請求項 5の装置。
[7] マトリクス表示されたデータ転送のいずれかを指定することにより、そのデータ転送 に対応するソースステートメントまたは中間リストを前記表示デバイスに表示する機能 をさらに有する、請求項 6の装置。
[8] 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付け されたブロック IDとに基づき、前記実行用メモリの同一領域に対する第 1の処理プロ ックおよび第 2の処理ブロックの参照関係を求めて、前記第 1の処理ブロックと前記第 2の処理ブロックとを並列実行する可能性を示す、第 2の判断機能を、さらに有する、 請求項 2の装置。
[9] 前記第 2の判断機能は、前記メモリアクセス情報と、前記それぞれの命令のコードメ モリアドレスに関連付けされたブロック IDとに基づき、前記第 1の処理ブロックおよび 前記第 2の処理ブロックと前記実行用メモリとの間のアクセスに要するバンド幅を算出 する機能を備えている、請求項 8の装置。
[10] 前記グラフィック表示機能によりグラフィック表示された実行用メモリに対するァクセ スのサイクルを指定することにより、そのメモリアクセスに対応するソースステートメント または中間リストを前記表示デバイスに表示する機能をさらに有する、請求項 2の装 置。
[11] デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備え たソースプログラムを分析する処理をコンピュータにより実行するためのプログラムで あって、
前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生 成する段階で生成され、それぞれのソースステートメントおよび Zまたは前記それぞ れのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコード の実行時の実行用メモリにおける、前記中間リストがコードィ匕された命令のアドレスで あるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変 数メモリアドレスとを関連付けした情報を含み、
前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータ で走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変 数メモリアドレスおよびアクセスタイプを含み、
当該分析する処理は、 前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロック としてグループィ匕するためのブロック IDを、前記デバッグ情報に基づき、前記コードメ モリアドレスに関連付けしてメモリに記憶する機能と、
前記メモリアクセス情報に基づき、前記ソースプログラムを実行したときの、変数メモ リアドレスおよびアクセスタイプを含めた、前記実行用メモリに対するアクセス状況を、 サイクルの経過と共に、前記それぞれの命令のコードメモリアドレスに関連付けされた ブロック IDにより異なる形態で表示デバイスにグラフィック表示する機能とを含む、プ ログラム。
[12] 前記分析する処理は、さらに、
前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付け されたブロック IDとに基づき、対を成す処理ブロックの間の前記実行用メモリを介した データ転送の方向を示す、第 1の判断機能を含む、請求項 11のプログラム。
[13] 前記第 1の判断機能は、複数の対をなす処理ブロックの間の前記実行用メモリを介 したデータ転送の量および方向を前記表示デバイスにマトリクス表示する機能を含む 、請求項 12のプログラム。
[14] 前記分析する処理は、さらに、
前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連付け されたブロック IDとに基づき、前記実行用メモリの同一領域に対する第 1の処理プロ ックおよび第 2の処理ブロックの参照関係を求めて、前記第 1の処理ブロックと前記第 2の処理ブロックとを並列実行する可能性を示す、第 2の判断機能を含む、請求項 1 1のプログラム。
[15] 前記第 2の判断機能は、前記メモリアクセス情報と、前記それぞれの命令のコードメ モリアドレスに関連付けされたブロック IDとに基づき、前記第 1の処理ブロックおよび 前記第 2の処理ブロックと前記実行用メモリとの間のアクセスに要するバンド幅を算出 する機能を含む、請求項 12のプログラム。
[16] デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備え たソースプログラムを分析する方法であって、
前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生 成する段階で生成され、それぞれのソースステートメントおよび Zまたは前記それぞ れのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコード の実行時の実行用メモリにおける、前記中間リストがコードィ匕された命令のアドレスで あるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変 数メモリアドレスとを関連付けした情報を含み、
前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータ で走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変 数メモリアドレスおよびアクセスタイプを含み、
以下の工程を有する方法。
al. 前記複数のソースステートメントの一部または前記中間リストの一部に対して、 前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックと してグループィ匕するためのブロック IDを割当て、そのブロック IDを前記デバッグ情報 に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。 a2. 前記メモリアクセス情報と、コードメモリアドレスに関連付けされたブロック IDと に基づき、メモリアクセス解析手段により、対を成す処理ブロックの間の前記実行用メ モリを介したデータ転送の方向を求める。
[17] さらに以下の工程を有する、請求項 16の方法。
a3. 複数の対をなす処理ブロックの間の前記実行用メモリを介したデータ転送の量 および方向を表示デバイスにマトリクス表示する。
[18] デバッグ情報と、メモリアクセス情報とを利用して、複数のソースステートメントを備え たソースプログラムを分析する方法であって、
前記デバッグ情報は、前記ソースプログラムをコンパイルしてオブジェクトコードを生 成する段階で生成され、それぞれのソースステートメントおよび Zまたは前記それぞ れのソースステートメントを中間言語に翻訳した中間リストと、前記オブジェクトコード の実行時の実行用メモリにおける、前記中間リストがコードィ匕された命令のアドレスで あるコードメモリアドレスおよびその命令によりアクセスされる変数のアドレスである変 数メモリアドレスとを関連付けした情報を含み、
前記メモリアクセス情報は、前記オブジェクトコードをサイクルベースのシミュレータ で走行することにより生成され、サイクル単位でアクセスされるコードメモリアドレス、変 数メモリアドレスおよびアクセスタイプを含み、
以下の工程を有する方法。
bl. 前記複数のソースステートメントの一部または前記中間リストの一部に対して、 前記複数のソースステートメントの一部または前記中間リストの一部を処理ブロックと してグループィ匕するためのブロック IDを割当て、そのブロック IDを前記デバッグ情報 に基づき、それぞれの命令のコードメモリアドレスに関連付けしてメモリに記憶する。 b2. 前記メモリアクセス情報と、前記それぞれの命令のコードメモリアドレスに関連 付けされたブロック IDとに基づき、メモリアクセス解析手段により、前記実行用メモリの 同一領域に対する第 1の処理ブロックおよび第 2の処理ブロックの参照関係を求めて 、前記第 1の処理ブロックと前記第 2の処理ブロックとを並列実行する可能性を示す。 さらに、以下の工程を有する請求項 18の方法。
b3. 前記メモリアクセス解析手段により、前記メモリアクセス情報と、前記それぞれの 命令のコードメモリアドレスに関連付けされたブロック IDとに基づき、前記第 1の処理 ブロックおよび前記第 2の処理ブロックと前記実行用メモリとの間のアクセスに要する バンド幅を算出する。
PCT/JP2005/015158 2004-08-23 2005-08-19 ソースプログラムの分析装置および方法 WO2006022204A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2006531879A JP4866241B2 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置
US11/573,777 US20080288923A1 (en) 2004-08-23 2005-08-19 Source Program Analysis Device And Method
EP05772688A EP1788485A4 (en) 2004-08-23 2005-08-19 SOURCE PROGRAM ANALYSIS DEVICE AND METHOD

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2004-242151 2004-08-23
JP2004242151 2004-08-23

Publications (1)

Publication Number Publication Date
WO2006022204A1 true WO2006022204A1 (ja) 2006-03-02

Family

ID=35967416

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/015158 WO2006022204A1 (ja) 2004-08-23 2005-08-19 ソースプログラムの分析装置および方法

Country Status (4)

Country Link
US (1) US20080288923A1 (ja)
EP (1) EP1788485A4 (ja)
JP (1) JP4866241B2 (ja)
WO (1) WO2006022204A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237759A (ja) * 2009-03-30 2010-10-21 Nec Corp シンボリックデバッガ、方法およびプログラム
JP2011215810A (ja) * 2010-03-31 2011-10-27 Fujitsu Ltd シミュレーション装置
CN112400162A (zh) * 2018-07-19 2021-02-23 日立汽车***株式会社 模拟装置及其方法、以及ecu装置

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4905165B2 (ja) * 2007-02-07 2012-03-28 富士通株式会社 監視支援プログラム、監視方法および監視システム
US8042099B2 (en) * 2007-05-30 2011-10-18 Red Hat, Inc. Facilitating availability of object data types at runtime
WO2009075116A1 (ja) * 2007-12-12 2009-06-18 Nec Corporation プログラムデバッグ方法、プログラム変換方法及びそれを用いるプログラムデバッグ装置、プログラム変換装置並びに記憶媒体
KR100939917B1 (ko) 2008-03-07 2010-02-03 에스케이 텔레콤주식회사 움직임 예측을 통한 부호화 시스템 및 움직임 예측을 통한부호화 방법
US9026925B2 (en) * 2008-10-17 2015-05-05 International Business Machines Corporation Method to create and use an aspect oriented color coding algorithm for a graphical user interface
JP5059174B2 (ja) * 2010-08-10 2012-10-24 株式会社東芝 プログラム変換装置、およびそのプログラム
US9355017B2 (en) * 2012-01-06 2016-05-31 Iii Holdings 4, Llc Automated error checking system for a software application and method therefor
KR101674787B1 (ko) * 2015-01-05 2016-11-10 삼성에스디에스 주식회사 프로그램의 성능 측정 시스템 및 방법
US20180173455A1 (en) * 2016-12-16 2018-06-21 International Business Machines Corporation Storage profiler for a computer operating system

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53112043A (en) * 1977-03-11 1978-09-30 Fujitsu Ltd Program debugging system
JPS63204443A (ja) * 1987-02-20 1988-08-24 Mitsubishi Electric Corp ソフトウエア開発支援装置
JPH05197587A (ja) * 1991-11-12 1993-08-06 Fujitsu Ltd プログラムの動作表示処理装置
JPH10283226A (ja) * 1997-03-31 1998-10-23 Sony Computer Entertainment:Kk コンピユータ機器の解析装置及びその方法
JP2003216678A (ja) * 2001-04-06 2003-07-31 Pacific Design Kk データ処理システムおよび設計システム
JP2004302706A (ja) * 2003-03-31 2004-10-28 Nec Corp プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5450554A (en) * 1991-11-11 1995-09-12 Matsushita Electric Industrial Co., Ltd. Apparatus for detecting possibility of parallel processing and method thereof and a program translation apparatus utilized therein
US6230313B1 (en) * 1998-12-23 2001-05-08 Cray Inc. Parallelism performance analysis based on execution trace information
US6877079B2 (en) * 2001-03-06 2005-04-05 Samsung Electronics Co., Ltd. Memory system having point-to-point bus configuration
US20020152061A1 (en) * 2001-04-06 2002-10-17 Shintaro Shimogori Data processing system and design system
JP2004234068A (ja) * 2003-01-28 2004-08-19 Pacific Design Kk プログラム性能評価方法およびプロファイラ

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS53112043A (en) * 1977-03-11 1978-09-30 Fujitsu Ltd Program debugging system
JPS63204443A (ja) * 1987-02-20 1988-08-24 Mitsubishi Electric Corp ソフトウエア開発支援装置
JPH05197587A (ja) * 1991-11-12 1993-08-06 Fujitsu Ltd プログラムの動作表示処理装置
JPH10283226A (ja) * 1997-03-31 1998-10-23 Sony Computer Entertainment:Kk コンピユータ機器の解析装置及びその方法
JP2003216678A (ja) * 2001-04-06 2003-07-31 Pacific Design Kk データ処理システムおよび設計システム
JP2004302706A (ja) * 2003-03-31 2004-10-28 Nec Corp プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
See also references of EP1788485A4 *
TOI T. ET AL: "Doteki Saikosei Processor o C Gengo Dake de Sekkei Kano ni", NIKKEI ELECTRONICS, no. 876, 21 June 2004 (2004-06-21), pages 131 - 138, XP002998835 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010237759A (ja) * 2009-03-30 2010-10-21 Nec Corp シンボリックデバッガ、方法およびプログラム
JP2011215810A (ja) * 2010-03-31 2011-10-27 Fujitsu Ltd シミュレーション装置
CN112400162A (zh) * 2018-07-19 2021-02-23 日立汽车***株式会社 模拟装置及其方法、以及ecu装置

Also Published As

Publication number Publication date
US20080288923A1 (en) 2008-11-20
EP1788485A1 (en) 2007-05-23
EP1788485A4 (en) 2012-09-26
JP4866241B2 (ja) 2012-02-01
JPWO2006022204A1 (ja) 2008-05-08

Similar Documents

Publication Publication Date Title
JP4866241B2 (ja) ソースプログラムの分析装置
JP4629768B2 (ja) 並列化処理方法、システム、及びプログラム
JP4042604B2 (ja) プログラム並列化装置,プログラム並列化方法およびプログラム並列化プログラム
CN104750603B (zh) 一种多核dsp软件仿真器及其物理层软件测试方法
JP3480973B2 (ja) 並列処理システムの動作解析装置
KR20110071097A (ko) 소스 코드 처리 방법, 시스템, 및 프로그램
US20070011664A1 (en) Device and method for generating an instruction set simulator
EP1248211A2 (en) Data processing system and design system
JP4886838B2 (ja) 並列化方法、システム、及びプログラム
US20120054722A1 (en) Trace generating unit, system, and program of the same
US6360360B1 (en) Object-oriented compiler mechanism for automatically selecting among multiple implementations of objects
Obaida et al. Parallel application performance prediction using analysis based models and HPC simulations
Bruce et al. Enabling reproducible and agile full-system simulation
US11593540B1 (en) Systems and methods for performing concurrency analysis in simulation environments
US10380313B1 (en) Implementation and evaluation of designs for heterogeneous computing platforms with hardware acceleration
US10528691B1 (en) Method and system for automated selection of a subset of plurality of validation tests
Sharma et al. Performance evaluation of real-time systems
Bobrek et al. Stochastic contention level simulation for single-chip heterogeneous multiprocessors
US10579761B1 (en) Method and system for reconstructing a graph presentation of a previously executed verification test
Cedersjö et al. Software code generation for dynamic dataflow programs
CN116228515A (zh) 硬件加速***、方法及相关装置
Uddin et al. Collecting signatures to model latency tolerance in high-level simulations of microthreaded cores
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP2023180315A (ja) 変換プログラムおよび変換処理方法
Hu et al. A performance prototyping approach to designing concurrent software architectures

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KM KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NG NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SM SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IS IT LT LU LV MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2006531879

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2005772688

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2005772688

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 11573777

Country of ref document: US