摘要:
A software performance analyzer nonintrusively measures six different aspects of software execution. These include histograms or a table indicating the degree of memory activity within a collection of specified address ranges, or indicating the amount of memory or bus activity caused by the execution of programming fetched from within a collection of specified ranges, or indicating for a specified program the relative frequency with which it actually executes in specified lengths of time, or indicating for a specified program the relative frequency of a collection of specified available potential execution times (i.e., the complement of the previous measurement), or indicating for two specified programs the relative frequency of a specified collection time intervals between the end of one of the programs and the start of the other, or lastly, indicating the number of transitions between selected pair of programs. All measurements may be either percentages relative to only the specified programs or ranges, or may be absolute percentages with respect to all activity occurring during the measurement. Acquired data may be in terms of time or of qualified occurrences of a specified event. Enable/disable and windowing for context recognition are available. The measurements are made by randomly choosing and monitoring a first range for a selected period of time. An address range detector and bus status recognize supply information to a state machine configured to control the particular type of measurement desired. Various counters are responsive to the state machine and accumulate data later reduced by software controlling the software performance analyzer. At the end of the monitoring period the next address range is monitored, and so on until the entire list has been used, whereupon a new random starting range is chosen and the measurement continues. The first two types of measurements listed above may also be performed in a real-time mode where two ranges are in fact monitored simultaneously and nearly continuously.
摘要:
A software performance analyzer nonintrusively measures six different aspects of software execution. These include histograms or a table indicating the degree of memory activity within a collection of specified address ranges, or indicating the amount of memory of bus activity caused by the execution of programming fetched from within a collection of specified ranges, or indicating for a specified program the relative frequency with which it actually executes in specified lengths of time, or indicating for a specified program the relative frequency of a collection of specified available potential execution times (i.e., the complement of the previous measurement), or indicating for two specified programs the relative frequency of a specified collection time intervals between the end of one of the programs and the start of the other, or lastly, indicating the number of transitions between selected pairs of programs. All measurements may be either percentages relative to only the specified programs or ranges, or may be absolute percentages with respect to all activity occurring during the measurement. Acquired data may be in terms of time or of qualified occurrences of a specified event. Enable/disable and windowing for context recognition are available. The measurements are made by rendomly choosing and monitoring a first range for a selected period of time. An address range detector and bus status recognizer supply information to a state machine configured to control the particular type of measurement desired. Various counters are responsive to the state machine and accumulate data later reduced by software controlling the software performance analyzer. At the end of the monitoring period the next address range is monitored, and so on until the entire list has been used, whereupon a new random starting range is chosen and the measurement continues. The first two types of measurements listed above may also be performed in a real-time mode where two ranges are in fact monitored simultaneously and nearly continuously.
摘要:
A programmable logic device having a configurable random access memory (RAM) integrated on a single integrated circuit chip. The configurable RAM has a user selectable logical configuration. In operation, the RAM in accordance with the present invention is addressed by a system address bus and data is provided using a system data bus. The memory array can also be addressed by a control address bus and data read out and loaded into the RAM using a control data bus.
摘要:
A system for inserting code markers for observing indications (external to the microprocessor upon which the software operates) of the occurrence of an event in the execution of the software. Additional instructions or markers are added to the software to be debugged to produce simple, encoded, memory references to otherwise unused memory or I/O locations that will always be visible to a logic analyzer as bus cycles. Although the code markers cause a minimal intrusion in the underlying software, they make tracing events by a conventional logic analyzer much simpler and allow for performance evaluations in manners not heretofore possible. The inserted code markers provide a method of dynamically extracting information from a running host or real-time "black box" embedded system under test using simple low intrusion print statements, encoded I/O writes on procedure entries and exits, and/or an interface to service calls and the like which writes out the passed parameters. The code markers are inserted at compile time or interactively during the debug session to make visible critical points in the code execution, such as function calls, task creation and semaphore operations, so as to speed isolation of problems at test points during debugging. Performance analysis and event analysis use the code markers to cut through the ambiguities of microprocessor prefetch and cache operations. Because of these features, the invention is particularly advantageous for use by software design teams developing complex embedded host or real-time operating systems using multi-task operating systems and/or object oriented systems.